オブジェクト (パネル) 自体からJPanel
イベント トリガーを取得する複数のクラス間のナビゲーションのコーディング方法を誰か教えてもらえますか? JButton
について読みましCardLayout
た。パネルは、親パネルで発生しているイベントからスワップできます。私が達成したいのは、パネルに埋め込まれたボタンをクリックすると、ボタンが消えるか、目的のパネルが表示されるはずです。解決策が見つからないようです。
質問する
2550 次
2 に答える
3
CardLayoutには、カード内の子のアクションからカードを切り替えることを妨げるものは何もありません。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Testing extends JFrame {
private JPanel cardHolder;
private CardLayout cards;
private static final String cardA = "A";
private static final String cardB = "B";
private class Switcher implements ActionListener{
String card;
Switcher(String card) { this.card = card; }
@Override
public void actionPerformed(ActionEvent e) {
cards.show(cardHolder, card);
}
}
private void run() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel pa = new JPanel();
JButton ba = new JButton("Switch to B");
ba.addActionListener(new Switcher(cardB));
pa.add(ba);
pa.setBackground(Color.CYAN);
JPanel pb = new JPanel();
JButton bb = new JButton("Switch to A");
bb.addActionListener(new Switcher(cardA));
pb.add(bb);
pb.setBackground(Color.MAGENTA);
cardHolder = new JPanel();
cards = new CardLayout();
cardHolder.setLayout(cards);
cardHolder.add(pa, cardA);
cardHolder.add(pb, cardB);
add(cardHolder);
pack();
setVisible(true);
}
public static void main(String[] args) {
try {
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
new testing().run();
}
});
} catch (Exception ex) { }
}
}
于 2012-06-05T17:41:44.647 に答える
2
カード間の切り替えにJButtonを使用する代わりに、JMenuItems で JMenu を使用できます。
于 2012-06-05T17:33:38.957 に答える