如何通过监听器从网格面板更新组件?
我有以下问题: 我以这种方式创建一个网格表
public class gui {
JPanel gridPanel = new JPanel();
JPanel background = new JPanel();
JLayeredPane layeredPanel = new JLayeredPane();
...
public gui{
...
for(int i=0; i<2; i++){
JPanel panel= new JPanel(new BorderLayout());
panel.setOpaque(false);
gridPanel.add(panel);
}
gridPanel.setOpaque(false);
layered.add(background,new Integer(1));
layered.add(gridPanel, new Integer(2));
JButton piece = new JButton( new ImageIcon("an image"));
JPanel panel = (JPanel)gridPanel.getComponent(0);
panel.add(piece);
...
}
好的,这很好用,但我想向 JButton 添加一个 Action 监听器,以允许更新 gridPanel
,我想在 GUI 的构建器中添加它:
piece.addActionListener(new Listener(this));
我以这种方式创建一个新类 ActionListener:
public class Listener implements ActionListener{
private gui gui1;
public movimentoListener(gui gui1){
gui1=gui;
}
public void actionPerformed(ActionEvent e){
JButton piece = new JButton( new ImageIcon("an other image"));
JPanel panel = (JPanel)getGridPanel().getComponent(1); //obviously I've created getGridPanel
panel.add(piece);
gui.getGridPanel().repaint()
}
}
我希望当我按下按钮时,我的 actionPerformed
用新图像更改我的 gridPanel
的组件 1,但此代码不起作用,我尝试在网络上搜索,但没有找到解决方案。
最佳答案
看看这些线程:
CardLayout display Next panel - java Swing
java swing dynamically adding components
希望对你有帮助。
关于java - 通过监听器从网格面板更新组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16989757/