gpt4 book ai didi

java - 动态生成的 JButton 的 actionEvent 不起作用

转载 作者:行者123 更新时间:2023-11-30 03:21:17 24 4
gpt4 key购买 nike

我正在动态添加按钮。当我单击该按钮时,应该执行操作,并且我需要单击哪个按钮的值。

import java.awt.Component;
import java.awt.Font;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class CustomCell {
public static void main( String [] args ) {
Object [] columnNames = new Object[]{ "Id", "Quantity" };
Object [][] data = new Object[][]{ {"06", 1}, {"08", 2} };

JTable table = new JTable( data, columnNames ) {
public TableCellRenderer getCellRenderer( int row, int column ) {
return new PlusMinusCellRenderer();
}
};

table.setRowHeight( 32 );
showFrame( table );
}

private static void showFrame( JTable table ) {
JFrame f = new JFrame("Custom Cell Renderer sample" );
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
f.add( new JScrollPane( table ) );
f.pack();
f.setVisible( true );
}
}

class PlusMinusCellRenderer extends JPanel implements TableCellRenderer {
public Component getTableCellRendererComponent(
final JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column) {

JButton jb= new JButton("Edit");
this.add(jb);
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
System.out.println("Clicked !");
}
});

return this;
}


}

上面的 Action 根本不是召唤。有人可以帮助我解决两件事吗?1)应该调用actionPerformed方法..2)我需要获取点击行的值。

最佳答案

您会注意到,不仅 ActionListener 没有被调用,而且按钮也永远不会显示自己被按下。原因是 JTable 单元格渲染器仅显示图像,仅此而已,它不是 Swing 组件,它无法显示可推送的 JButton,因此无法通过使用单元格渲染器来解决您的问题。另一方面,单元格编辑器可以,您可能希望走这条路。

关于java - 动态生成的 JButton 的 actionEvent 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31274286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com