我有一个Jtable在其中一列中有一个按钮,当我按下按钮时我想访问第一列中的值

时间:2019-05-11 17:23:30

标签: java swing jtable listener jbutton

我有一个包含3列的JTable:ID,名称和操作。在最后一栏中,我为每一行都有一个按钮(我将发布一个printscreen)。当我按下按钮时,我想访问第一列中的值。我做了一个表的侦听器,当我单击表时它可以工作,但是如果单击按钮(位于第三列),它将无法获取值(我认为是因为单击不是直接在jtable中)。

按下按钮时如何获取值?

谢谢

print screen of the JTable function

我做的听众:

table.addMouseListener(new MouseAdapter() {
          @Override
            public void mouseClicked(final MouseEvent e) {
                if (e.getClickCount() == 1) {
                    final JTable jTable= (JTable)e.getSource();
                    final int row = table.getSelectedRow();
                    final int column = table.getSelectedColumn();
                    final int valueInCell = (Integer)table.getValueAt(row, 0);
                    setSelectedID(valueInCell);
                    System.out.println("Selecionou: "+valueInCell);
                }
            }
    });

1 个答案:

答案 0 :(得分:0)

除了向表中添加常规JButton之外,您还可以添加自己的自定义JButton;在点击时(获取ActionListener),并且在构造时,它将以期望的行为实现data

  1. 接收(作为参数)并将要引用的data保存在字段中。
  2. 将自己注册为ActionListener

这种自定义JButton看起来像这样:

public class DataButton<T> extends JButton implements ActionListener {

    private T data;

    public DataButton(T data) {
        this.data = data;
        addActionListener(this);
    }

    public void actionPerformed(ActionEvent e) {
        System.out.println("Selection: " + getData());
    }

    public T getData() {
        return data;
    }
}