[英]How do I add the same listener to multiple components in the NetBeans GUI Builder
[英]Netbeans: How do I add a valueChanged listener to a JTable from the “design” GUI builder?
我右键单击了JTable并将一些代码插入到一个糟糕的kludge中的“post listeners code”中。
我没有看到添加的选项
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent evt) {
到JTable的“设计”视图中的“事件”。 我确定有一种方法可以从设计视图中添加valueChanged(ListSelectionEvent evt),但是如何?
也许这是一个错误 ?
行选择更改事件由JTable的ListSelectionModel生成,而不是由JTable本身生成 - 因此事件无法在Component Inspector中呈现(作为JTable的事件)。 处理此事件必须手动完成,例如:
jTable1.getSelectionModel().addListSelectionListener(
new javax.swing.event.ListSelectionListener() {
public void valueChanged(ListSelectionEvent evt) {
customRowSelectionEventHandler(evt);
}
}
);
虽然可能有一种方法可以在“蓝色”,“托管”代码之外获取JTable的ListSelectionModel?
您可以在源的可编辑部分中创建自己的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());
}
}
也许你可以扩展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;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.