【问题标题】:Add a class inside a JDesktopPane在 JDesktopPane 中添加一个类
【发布时间】:2023-03-16 21:02:01
【问题描述】:

我一直在寻找这个问题,但它对我不起作用。

我所做的是我有这样的目录

|-> Games (folder)
|----> GamesCombined.java and classes
|----> games (folder)
|--------> pacman (folder)
|------------> PacmanGame.java and classes

Games.java 内部

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

public class GamesCombined extends JFrame {
    private JDesktopPane dsktp = new JDesktopPane();
    private JMenuBar menuBar = new JMenuBar(); 
    private JMenu gamesmenu = new JMenu("Games");
    private JMenuItem play_pacman = new JMenuItem("Pacman"); 
    public GamesCombined() {
        super("Games");
        setLayout(null);
        Container c = getContentPane();
        add(dsktp);
        setJMenuBar(menuBar);
        menuBar.add(gamesmenu);
        gamesmenu.add(play_pacman);
        play_pacman.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                //I want to add PacmanGame.java as an InternalFrame of this DesktopPane.
            }   
        });
        int frameWidth = 800;
        int frameHeight = 850;
        setSize(frameWidth, frameHeight);
        setLocationRelativeTo(null);
        setResizable(false);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
}

有可能吗?或任何其他在 jdesktoppane 中添加外部类的方法?

【问题讨论】:

  • 你的意思是添加JInternalFrame
  • 将 PacmanGame.java 添加为 JInternalFrame。
  • PacmanGame.java 扩展 JInternalFrame 吗?
  • 阅读 How to Use Internal Frames 中 Swing 教程中的部分以获取工作示例。

标签: java swing jdesktoppane internal-class


【解决方案1】:
 setLayout(null);  // That's your problem

不要将布局设置为null,为什么要这样做?删除这一行并添加如下内部结构:

public void actionPerformed(ActionEvent ae) {
     PacmanGame obj = new PacmanGame();
     obj.setVisible(true);
     obj.setSize(....);//and so on
     dsktop.add(obj);
}   

【讨论】:

  • 回复 if PacmanGame.java extends JInternalFrame, umm No. 那我应该改吗?从 JFrame 到 JInternalFrame?
  • 是的,不用出道就改。
  • OHHH 所以,这就是为什么! >.
  • 是的,多多练习+阅读会学会你,别着急,每一条路都从第一步开始;)
猜你喜欢
  • 2012-09-22
  • 1970-01-01
  • 2011-10-15
  • 2010-12-01
  • 2011-11-23
  • 2014-05-17
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
相关资源
最近更新 更多