java - 在切换时故意使 CardLayout 中的组件不可见
问题描述
问题:使用 CardLayout,当我运行应用程序并切换到另一张卡片时,所有组件都会显示。我希望与 JPanel card3 关联的组件在我切换另一张卡时不显示。这可能吗?
我希望在切换卡片布局时不显示 card3 组件(基本上只有四个按钮)。
public class App2 implements ActionListener {
JPanel cards;
final static String BUTTONPANEL = "Switch Mode";
final static String TEXTPANEL = "Card with JTextField";
public void addComponentToPane(Container pane) {
JPanel comboBoxPane = new JPanel();
String comboBoxItems[] = { BUTTONPANEL, TEXTPANEL };
JButton jb = new JButton("Switch Mode");
jb.setFocusable(false);
jb.addActionListener(this);
comboBoxPane.add(jb);
//Create the "cards".
JPanel card1 = new JPanel(new GridLayout(6,1));
comboBoxPane.add(card1);
JPanel card3 = new JPanel(new GridLayout(6,1));
comboBoxPane.add(card3);
card1.add(new JLabel("Current Mode: Edit"));
card1.add(new JLabel("Question"));
card1.add(new JTextField(30));
card1.add(new JLabel("Answer"));
card1.add(new JTextField(30));
card3.add(new JButton("Previous"));
card3.add(new JButton("Next"));
card3.add(new JButton("Add"));
card3.add(new JButton("Save"));
JPanel card2 = new JPanel(new GridLayout(6,1));
card2.add(new JLabel("Current Mode: Test"));
card2.add(new JLabel("Question"));
card2.add(new JTextField("", 20));
card2.add(new JLabel("Answer"));
card2.add(new JTextField("", 20));
cards = new JPanel(new CardLayout());
cards.add(card1, BUTTONPANEL);
cards.add(card2, TEXTPANEL);
pane.add(comboBoxPane, BorderLayout.PAGE_END);
pane.add(cards, BorderLayout.CENTER);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
CardLayout cl = (CardLayout)(cards.getLayout());
cl.show(cards, TEXTPANEL);
card3.setVisible(false);
}
private static void createAndShowGUI() {
JFrame frame = new JFrame("Flash Cards");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
App2 demo = new App2();
demo.addComponentToPane(frame.getContentPane());
frame.pack();
frame.setVisible(true);
}
解决方案
推荐阅读
- class - 如何在文本冒险中的对象之间指定?
- reactjs - React 重新渲染所有 dom,即使我只是更改其中一个
- css - Tailwind CSS:如何使元素具有粘性和全高?
- python - 永续合约的币安 API OCO
- mongodb - mongoDB isMaster 命令太慢
- javascript - 使用 javascript (ES6) 将标签添加到现有标签的问题
- node.js - AWS cognito 未向美国电话号码发送验证短信
- .htaccess - .htaccess 中的 CodeIgniter RewriteRule 和 ErrorDocument
- json - 为什么我无法从字典中检测到 None 值
- c++ - 对齐 SSBO 的内存,即包含数组的结构数组?