Java Netbeans:如何将valueChanged侦听器从;“设计”;GUI生成器?

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

我右键单击JTable,并在“post listeners code”中插入了一些代码

我看不出要添加的选项

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());
    }
}