最小化时,JInternalFrame图标移动到JPanel下方

时间:2012-10-30 17:16:13

标签: java swing jpanel jinternalframe jdesktoppane

我正在尝试设计一个小游戏,并使用JInternalFrame来显示库存。我遇到的问题是,当我最小化InternalFrame时,左下角的图标会自动隐藏在JPanel后面,该JPanel也会添加到JDesktopPane中。当我向下拖动窗口(使窗口垂直放大)时,白色DesktopPane在默认的灰色JPanel下面变得可见。此外,当我向下拖动时,显示InternalFrame的图标。我试图发布图片,但我是网站的新手,所以我不能:(。

我尝试过使用moveToFront()和toFront()方法,并尝试重写InternalFrameListener以显示框架,但没有任何效果。如果你认为我使用了一个糟糕的设计,请随时告诉我 - 我只是一个学生,而且我对常规练习知之甚少。

这是我的代码

public class GameTester extends JFrame {

    private JDesktopPane pane;
    private Inventory i; //class that extends JInternalFrame

    public static void main(String[] args) {
        GameTester frame = new GameTester();
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(1280, 720);
    }       

    public GameTester() {
        setFocusable(true);
        i = new Inventory("Inventory");

        GamePanel g = new GamePanel();
        g.setBounds(0, 0, 1280, 720);

        pane = new JDesktopPane();
        pane.add(i);
        setContentPane(pane);
        getContentPane().add(g);            
        }
}

1 个答案:

答案 0 :(得分:2)

尝试这样的事情:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;


public class GameStarter extends JFrame {

    private JDesktopPane pane = new JDesktopPane();
    private JInternalFrame i = new JInternalFrame(); 

    private JPanel panel = new JPanel();

    public static void main(String[] args) {
        GameStarter frame = new GameStarter();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(1024,768);
        frame.setVisible(true);
    }       

    public GameStarter() {
        setLayout(new BorderLayout());
        i.setClosable(true);
        i.setIconifiable(true);
        i.setMaximizable(true);
        i.setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
        i.setSize(320,240);
        i.setVisible(true);
        pane.setPreferredSize(new Dimension(1024,320));
        pane.setBackground(Color.GRAY);
        pane.add(i);    
        panel.setBackground(Color.YELLOW);

        add(pane,BorderLayout.SOUTH);
        add(panel,BorderLayout.CENTER);
    }
}

enter image description here

我个人认为,在JPanel上添加JDesktopPane的想法很糟糕。

相关问题