gpt4 book ai didi

java - jpanel 作为内部类

转载 作者:行者123 更新时间:2023-12-01 07:10:47 24 4
gpt4 key购买 nike

我需要编写一个简单的网球游戏。为了在不同的窗口(带有主菜单的面板、带有游戏的面板、带有设置的面板)之间移动,我决定使用内部类扩展 JPanel 并在发生诸如开始新游戏之类的事件时替换它。

但问题是 - 它看不到我的内部类。我的意思是我将它添加到 JFrame

mainframe.add(new MainMenuPanel());

但是当我运行程序时屏幕上没有任何内容。有什么问题吗?

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class MainFrame{
JFrame mainframe;

public static void main(String[] args){
new MainFrame();
}

public MainFrame() {
mainframe = new JFrame();
mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainframe.setSize(300, 400);
mainframe.setTitle("X-Tennis v0.1");

mainframe.add(new MainMenuPanel());

mainframe.getContentPane().setLayout(new GridLayout());
mainframe.getContentPane().setBackground(Color.WHITE);
mainframe.setVisible(true);
}

public class MainMenuPanel extends JPanel {

JPanel mainmenupanel;
JLabel label1;
JButton btnNewGame,btnJoinGame;
ImageIcon iconNewGame,iconJoinGame;

public MainMenuPanel(){
mainmenupanel = new JPanel();

label1 = new JLabel("X-TENNIS");
label1.setFont(new Font("Comic Sans MS",Font.ITALIC,20));
label1.setForeground(Color.BLUE);

btnNewGame = new JButton("New Game", iconNewGame);
btnNewGame.setFocusPainted(false);
btnNewGame.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(mainframe, "New game");
//delete current panel and add another to mainframe
}
}
);
btnNewGame.setPreferredSize(new Dimension(140,30));
btnJoinGame = new JButton("Join game",iconJoinGame);
mainmenupanel.add(label1);
mainmenupanel.add(btnNewGame);
}
}
}

最佳答案

MainMenuPanel 类中不需要 mainmenupanel,因为 MainMenuPanel 本身就是一个 JPanel

简单地将MainMenuPanel中的所有组件直接添加到自身

关于java - jpanel 作为内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14780067/

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