【发布时间】:2015-01-29 20:17:05
【问题描述】:
我一直在尝试使用JDialog 做的是......
- 通过单击标题选择
JTable列 - 检查用户选择了哪一列
- 获取列内单元格的值
根据this post和this page,可以通过点击标题来选择一列,通过设置JTableHeader。
但是,它们似乎都不适用于我正在尝试做的事情。
首先,我不确定将JTableHeader 放在哪里。上面的示例似乎已将其用于初始化,但我在编码中没有看到任何合适的空间来执行此操作。
至少我知道第二个例子是JPanel。因此,为了在JDialog 中有一个JTableHeader,JTableHeader 需要设置在一个完全不同的位置,因为默认情况下无法手动修改 JDialog 的initComponents()。
此外,我找不到如何选择标题(与单个单元格不同)。我假设我需要事先设置一个JTableHeader。
最后,我没有看到任何方法来检测选择了哪一列。至少我找到了jTable.getValueAt(int, int) 方法,但是这种方法似乎是为了获取单个单元格。
现在我怀疑使用 JTable 和 JDialog 可能无法做到这一点。如果您能提供任何见解,我将不胜感激。
我添加了initComponents()的一部分,以便您轻松理解。
private void initComponents() {
//here are irrelevant codes
jTable1 = new javax.swing.JTable();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
jLabel1.setFont(new java.awt.Font("MS UI Gothic", 3, 18)); // NOI18N
jLabel1.setText("Choose level(s) or unit(s)");
//irrelevant codes
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{"EN6", "EN3", "EN5", "IN1"},
{"EN2", "EN3", null, "IN4"},
{null, null, null, "IN1"},
{null, null, null, "IN2"},
new String [] {
"EN2", "EN3", "EN5", "IN1"
}
) {
Class[] types = new Class [] {
java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
});
//lots of lines, seem to be irrelevant
pack();
}
【问题讨论】:
-
我想你在找jTable1.getModel().getValueAt(x,y) 和相关函数。
-
选择可设置,有行、列、单元选择的选项
标签: java swing jtable selection jtableheader