2

小さなゲームを設計しようとしていて、JInternalFrame を使用してインベントリを表示しています。私が抱えている問題は、InternalFrame を最小化すると、左下隅のアイコンが、JDesktopPane にも追加されている JPanel の後ろに自動的に隠れることです。ウィンドウを下にドラッグすると (ウィンドウが垂直方向に大きくなります)、デフォルトの灰色の JPanel の下に白い DesktopPane が表示されます。また、下にドラッグすると、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);            
        }
}
4

1 に答える 1

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

ここに画像の説明を入力

私の個人的な意見は、追加するという考えJPanelJDesktopPane悪いということです。

于 2012-10-30T17:56:43.650 に答える