在Java中重用按钮不会显示任何内容
我对Java中的GUI编程非常陌生,所以如果这段代码非常基础,请原谅我。简言之,我想有两个面板是相同的设计。按下面板1上的“A”按钮后,我希望面板2以相同的设计显示。使GUI高效或美观目前对我来说并不重要。我只是想让它工作。我有下面列出的部分代码在Java中重用按钮不会显示任何内容,java,Java,我对Java中的GUI编程非常陌生,所以如果这段代码非常基础,请原谅我。简言之,我想有两个面板是相同的设计。按下面板1上的“A”按钮后,我希望面板2以相同的设计显示。使GUI高效或美观目前对我来说并不重要。我只是想让它工作。我有下面列出的部分代码 JButton buttonA = new JButton("a"); JButton buttonB = new JButton("b"); JButton buttonC = new JButton("c"); JButton bu
JButton buttonA = new JButton("a");
JButton buttonB = new JButton("b");
JButton buttonC = new JButton("c");
JButton buttonD = new JButton("d");
JPanel pan1 = new JPanel();
JPanel pan2 = new JPanel();
setTitle ("Test");
setSize (640, 640);
setResizable(false);
GridLayout grid1 = new GridLayout();
setLayout (grid1);
FlowLayout flow1 = new FlowLayout();
pan1.setLayout (flow1);
pan1.add(buttonA);
pan1.add(buttonB);
pan1.add(buttonC);
pan1.add(buttonD);
buttonA.addActionListener(this);
buttonB.addActionListener(this);
buttonC.addActionListener(this);
buttonD.addActionListener(this);
FlowLayout flow2 = new FlowLayout();
pan2.setLayout (flow2);
pan2.add(buttonA);
pan2.add(buttonB);
pan2.add(buttonC);
pan2.add(buttonD);
add(pan1);
add(pan2);
pan1.setVisible(true);
pan2.setVisible(false);
setVisible(true);
public void actionPerformed(ActionEvent event) {
if (command.equals("a")){//i want to show the panel 2 after button a is pressed
System.out.println("HelloA");
pan1.setVisible(false);
pan2.setVisible(true);
}
目前,它只是在窗口中不显示任何内容。有人帮忙吗?简而言之,你不能 长期的答案是,组件只能驻留在单个父级上。将组件添加到第二个容器将自动将其从第一个容器中删除,然后再将其添加到新容器中 相反,您需要为这两个容器创建单独的按钮 另外,请了解
BorderLayout
无法支持您尝试执行的操作,它一次只能管理一个组件(在5个可用位置中的每个位置)
一个更好的解决方案是使用按钮,它旨在促进您试图实现的操作您不能将同一个按钮添加到两个不同的面板上。或者更确切地说,你可以,但是我会把它从第一个删除。我明白了。谢谢你的回答。我目前的项目是一个关于回答多项选择题的测验。我已经看到了你发给我的网站。然而,最重要的是,我不理解网站上的一些代码,卡片的布局看起来很混乱。如果我有10个问题(每个问题有4个答案,我需要40个按钮吗?),或者简单地更改单个面板的配置。“我不理解网站上的一些代码”-我强烈建议您花时间学习和理解它,因为我们所做的一切都不会低于官方教程网站提供的内容。注意,如果您有10个不同的问题,您只需要一个带有设置问题(…)的
问题面板
方法。