Java Netbeans:如何将valueChanged侦听器从;“设计”;GUI生成器?
我右键单击JTable,并在“post listeners code”中插入了一些代码 我看不出要添加的选项Java Netbeans:如何将valueChanged侦听器从;“设计”;GUI生成器?,java,swing,netbeans,jtable,netbeans-7,Java,Swing,Netbeans,Jtable,Netbeans 7,我右键单击JTable,并在“post listeners code”中插入了一些代码 我看不出要添加的选项 table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent evt) { 到JTable的“设计”视图中的“事件”。我确信有一种方法可以从设计视图中添加一个valueChanged(ListSe
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent evt) {
到JTable的“设计”视图中的“事件”。我确信有一种方法可以从设计视图中添加一个valueChanged(ListSelectionEvent evt),但是如何添加呢
也许这是一个问题
行选择更改事件由的ListSelectionModel生成
JTable,而不是JTable本身-因此事件不能在
组件检查器(作为JTable的事件)。必须正确处理此事件
手动完成,例如:
虽然可能有一种方法可以在“蓝色”、“托管”代码之外获取JTable的ListSelectionModel?也许您可以扩展
InputVerifier
这并不完全是它想要做的,但是你可以根据自己的用途来调整它
public class TableVerifier extends InputVerifier {
@Override
public boolean verify(JComponent input) {
assert input instanceof JTable : "I told you I wanted a table!";
JTable inputTable = (JTable) input;
int numberColumns = inputTable.getColumnCount();
int numberRows = inputTable.getRowCount();
for (int column = 0; column < numberColumns; column++) {
for (int row = 0; row < numberRows; row++) {
//DO YOUR STUFF
}
}
return true;
}
}
公共类TableVerifier扩展了InputVerifier{
@凌驾
公共布尔验证(JComponent输入){
断言JTable的输入实例:“我告诉过你我想要一个表!”;
JTable inputable=(JTable)输入;
int numberColumns=inputable.getColumnCount();
int numberRows=inputable.getRowCount();
for(int column=0;column
您可以在源代码的可编辑部分创建自己的ListSelectionListener
。您可以将侦听器的实例添加到表的Post init code
属性中的类变量jTable1
的选择模型中:
jTable1.getSelectionModel().addListSelectionListener(new MyListener());
侦听器本身可能如下所示:
private static class MyListener implements ListSelectionListener {
@Override
public void valueChanged(ListSelectionEvent e) {
System.out.println(e.getFirstIndex());
}
}
你到底在问什么?你的问题中没有问号。另外,作为旁注,如何通过Netbeans的“设计”视图将valueChanged侦听器添加到JTable?我在GUI生成器中看不到该选项。@Thufir:可以编译设计器源文件,但更改设计需要相应的
.form
文件。即使这样,重建也很痛苦。此外,没有什么要求您对所有内容都使用设计器,GroupLayout
也不是强制性的。这是一把电锯:用它把踏板锯到一定长度,而不是用来雕刻棋子。说得对。我喜欢GUI构建的“clicky”功能,但也许我会为我的JTables制作一个自定义JPane,然后用设计器将它们添加到其他JPane中…?@Thufir:没错,你可以将这样的面板添加到主布局中,如图所示。更改面板的布局是了解不太常见布局的好方法。
private static class MyListener implements ListSelectionListener {
@Override
public void valueChanged(ListSelectionEvent e) {
System.out.println(e.getFirstIndex());
}
}