gpt4 book ai didi

java - 将类(class)显示给另一个类(class)

转载 作者:行者123 更新时间:2023-12-01 13:25:18 25 4
gpt4 key购买 nike

您好,我正在为我的程序做主页,我希望当我单击迷宫按钮时,会出现迷宫类,并且与六边形按钮相同。

你能告诉我我的程序出了什么问题吗?每次我运行并单击按钮时都没有任何反应。感谢您的巨大帮助。

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.NORTHBorderLayout.SOUTH

这是更清晰的修复

  • 使用CardLayout。假设 MazeHex 已经是 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/

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