您好,我正在为我的程序做主页,我希望当我单击迷宫按钮时,会出现迷宫类,并且与六边形按钮相同。
你能告诉我我的程序出了什么问题吗?每次我运行并单击按钮时都没有任何反应。感谢您的巨大帮助。
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Center extends JFrame {
Maze x = new Maze();
HEX h = new HEX();
JPanel jp = new JPanel();
JButton jb = new JButton("Maze");
JButton jb1 = new JButton("Hex");
JFrame frame = new JFrame();
public Center()
{
frame.setTitle("Prims Maze Generation");
//setVisible(true);
//setSize(400,200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setSize(400, 200);
jp.add(jb);
jp.add(jb1);
frame.add(jp);
jb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
x.setVisible(true);
frame.pack();
}
});
jb.addActionListener(new ActionListener(){
public void actionPerformed (ActionEvent e)
{
h.setVisible(true);
}
});
}
public static void main(String args[])
{
Center p = new Center();
}
}
最佳答案
首先,您的类已经是一个 JFrame
,可以使用类 JFrame
或使用实例 JFrame
(并删除 JFrame 扩展- 只做这个),不要两者都做!
您的问题和简单的修复(但可能不会产生您预期的结果)。
JFrame
有一个默认的BorderLayout
,当您添加组件时,它会自动放置在BorderLayout.CENTER
位置。每个位置只能有一个组成部分。您试图在不知情的情况下向CENTER
添加三个组件。修复是否为每个组件指定不同的位置,即BorderLayout.NORTH
、BorderLayout.SOUTH
这是更清晰的修复
使用
CardLayout
。假设Maze
和Hex
已经是JPanels
(如果它们不是,那么就这样。做这样的事情CardLayout card = new CardLayout(); JPanel mainPanel = new JPanel(card); JPanel firstVisiblePanel = new JPanel(); Hex hex = new Hex(); Maze maze = new Maze(); public Center() { mainPanel.add(firstVisiblePanel, "initialPanel"); mainPanel.add(hex, "hex"); mainPanel.add(maze, "maze"); final JButton jbtHex = new JButton("Hex"); jbtHex.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { card.show(mainPanel, "hex"); } }); // do the same as above for the other panels. .... frame.add(mainPanel); <------- This is the ONLY panel you add to the frame. frame.setVisible(true); <----- Should be the LAST thing you do. }
查看更多信息 How to Use CardLayout和一个正在运行的SO Example
关于java - 将类(class)显示给另一个类(class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21832378/