gpt4 book ai didi

java - 如何在小程序中使用2个面板?

转载 作者:行者123 更新时间:2023-12-02 07:17:08 27 4
gpt4 key购买 nike

我正在尝试弄清楚如何在 swing 中跨多个面板进行导航。我想通过使用 CardLayout 而不是使用玻璃面板来完成此操作,因为从我读到的内容来看,这似乎是完成这项工作的正确工具(但是,如果您知道其他情况,请随时纠正我)。我编写了一个测试用例,几乎可以实现这一目标,但在两个方面存在不足。它使用已弃用的“show()”方法,而且在切换到第二张卡后,卡 1 上的按钮开始再次神秘地浮到表面!

public class test extends JPanel implements ActionListener{
final static int extraWindowWidth = 100;
JButton jbtnOne = new JButton("Button 1");
JPanel cardPanel = new JPanel(new CardLayout());
JPanel card1 = new JPanel();
JPanel card2 = new JPanel();

public void addComponentToPane(Container pane) {

//Create the "cards".
JPanel card1 = new JPanel() {
public Dimension getPreferredSize() {
Dimension size = super.getPreferredSize();
size.width += extraWindowWidth;
return size;
}
};


card1.add(jbtnOne);
card1.add(new JButton("Button 2"));
card1.add(new JButton("Button 3"));
card2.add(new JTextField("TextField", 20));

cardPanel.add(card1, "card1");
cardPanel.add(card2, "card2");

pane.add(cardPanel, BorderLayout.CENTER);
jbtnOne.addActionListener(this);
}

private static void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("TabDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Create and set up the content pane.
test demo = new test();
demo.addComponentToPane(frame.getContentPane());

//Display the window.
frame.pack();
frame.setVisible(true);
}

public static void main(String[] args) {

javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}

public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource() == jbtnOne){
System.out.println("HERE");
card2.show();
}
}
}

最佳答案

CardLayout 正在管理组件,因此您需要在 CardLayout 上调用 show 而不是 JPanel#show:

CardLayout cardLayout = (CardLayout) cardPanel.getLayout();
cardLayout.show(cardPanel, "card2");

或者,在切换卡组件时,您也可以使用

cardLayout.next(cardPanel);

关于java - 如何在小程序中使用2个面板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14803652/

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