【问题标题】:I have a Jtable with a button in one of the columns and I want to access the value in the 1st column when I press the button我有一个 Jtable,其中一列中有一个按钮,我想在按下按钮时访问第一列中的值
【发布时间】:2019-05-11 17:23:29
【问题描述】:

我有一个包含 3 列的 JTable:ID、名称和操作。在最后一列中,每行都有一个按钮(我将发布一个打印屏幕)。当我按下按钮时,我想访问第一列中的值。我对表格做了一个监听器,当我点击表格时它可以工作,但是如果我点击按钮(即在第三列中)它不会得到值(我认为这是因为点击不是直接在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);
                }
            }
    });

【问题讨论】:

    标签: java swing design-patterns listener jbutton


    【解决方案1】:

    您可以添加自己的自定义JButton,而不是将常规JButtons 添加到您的表中;这将实现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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-14
      • 1970-01-01
      • 1970-01-01
      • 2020-04-15
      • 1970-01-01
      • 1970-01-01
      • 2021-02-17
      相关资源
      最近更新 更多