Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JDesktopPane中添加一个类_Java_Swing_Jdesktoppane_Internal Class - Fatal编程技术网

Java 在JDesktopPane中添加一个类

Java 在JDesktopPane中添加一个类,java,swing,jdesktoppane,internal-class,Java,Swing,Jdesktoppane,Internal Class,我一直在寻找这个问题,但它不适合我 我所做的是,我有这样的目录 |-> Games (folder) |----> GamesCombined.java and classes |----> games (folder) |--------> pacman (folder) |------------> PacmanGame.java and classes Inside Games.java import java.awt.*; import javax.swi

我一直在寻找这个问题,但它不适合我

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

|-> Games (folder)
|----> GamesCombined.java and classes
|----> games (folder)
|--------> pacman (folder)
|------------> PacmanGame.java and classes
Inside 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中添加外部类的任何其他方法

 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);
}   

您的意思是添加?将PacmanGame.java添加为JInternalFrame。
PacmanGame.java
extends
JInternalFrame
?请阅读中的Swing教程中的部分以获得一个工作示例。作为对PacmanGame.java是否扩展JInternalFrame的答复,嗯,否。那么我应该更改它吗?从JFrame到JInternalFrame?是的,在不首次亮相的情况下进行更改。哦,这就是为什么!>我还需要学习很多东西。谢谢成功了。是的,大量的练习+阅读会让你学到东西,别担心,每一个方法都是从第一步开始;)