当前位置: 首页 > 知识库问答 >
问题:

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

卫高明
2023-03-14

我试图设计一个小游戏,并使用JInternalFrame来显示库存。不过,我遇到的问题是,当我最小化内部帧时,左下角的图标会自动隐藏在也添加到JDesktopPane的JPanel后面。当我向下拖动窗口(使窗口垂直变大)时,白色桌面在默认的灰色JPanel下面变得可见。此外,当我向下拖动时,内部框架的图标会显示出来。我试图张贴图片,但我是新来的网站,所以我不能:(。

我尝试过使用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个答案

陈翰林
2023-03-14

尝试这样的事情怎么样:

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

我个人的观点是,在JDesktopPane上添加JPanel的想法是不好的。

 类似资料:
  • 问题内容: 有什么办法以编程方式最小化JInternalFrame? 问题答案: “图标化或取消图标化此内部框架…”

  • 我想添加一个图像到一个JPanel中,JPanel在JInternalFrame中,JInternalFrame有一个父,JDesktopPane。 我尝试使用另一个类从路径添加图像,然后,

  • 我有四个内部框架和三个按钮在里面。当我点击最大化按钮,最大化,但它重叠所有的框架。但我的观点是,它应该显示最小化的框架。请找到下面的代码

  • 问题内容: 是否可以在JDialog中添加最大化/最小化按钮?如果不是,那么我们可以将这些按钮添加到JPanel吗? 我有一个JPanel,并且在该面板内部有一个JDialog。我想添加一个最小化/最大化按钮,以便当单击该按钮时,JDialog会根据JPanel调整JDialog下的组件。就像当我单击最大化时,jpanel应该被放大,并且该面板(JDialog)中的组件也被放大,反之亦然,以最小化

  • 我有一个JInternalFrame,它可以图标化,去图标化,关闭等。当单击按钮时,将打开此JInternalFrame。但是如果框架已经打开并被图标化,并且用户再次单击按钮,我不希望框架再次打开。所以我想知道如何让一个图标化的框架去图标化(所以基本上,当用户再次单击按钮时,它只是去图标化框架)。 我搜索了这个,找到了你可以做的JFrames: 但对于内部框架,这是不存在的。有人知道我能做些什么来

  • 我真的对此感到困惑。我在做“微旅行”游戏。这是手机游戏,但我是为电脑制作的。我有一个扩展JPanel的背景类,它只绘制一个从0开始的矩形,并且有屏幕的大小(我的游戏是全屏)。我有一个主菜单类,它也扩展了JPanel。我想在那里添加主菜单的所有内容。然后,我将所有内容添加到扩展JFrame的GameFrame类中。我有一个main类,它只是调用GameFrame类。下面是我的代码:背景类: Main