我正在为我的程序做我的主页,我想要发生的是当我点击迷宫按钮时,Maze类会出现并与六角形按钮相同。
你能告诉我我的程序出了什么问题吗?每次我跑步并点击一个按钮都没有任何反应。谢谢你的帮助。
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();
}
}
答案 0 :(得分:1)
在此之前,您的课程已经是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.
}
答案 1 :(得分:0)
我曾经遇到过这样的事情。尝试使用setVisible()方法调整框架大小。试试这个:
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.setSize(400, 200);
frame.pack();
}
});
jb.addActionListener(new ActionListener(){
public void actionPerformed (ActionEvent e)
{
h.setVisible(true);
frame.setSize(400, 200);
}
});
}