1

リスナーを介してグリッド パネルからコンポーネントを更新する方法は?

次の問題があります: この方法でグリッド テーブルを作成します

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 Listener を追加したいので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ボタンを押したときにコンポーネント 1 を新しい画像に変更したいのですgridPanelが、このコードが機能しません。Web で検索しようとしましたが、解決策が見つかりませんでした。

4

1 に答える 1

1

これらのスレッドを見てください:

CardLayout 表示 次のパネル - Java Swing

コンポーネントを動的に追加するJavaスイング

お役に立てば幸いです。

于 2013-06-07T17:52:25.857 に答える