2012-10-30 61 views
2

我正在嘗試設計一個小遊戲,並使用JInternalFrame顯示庫存。我遇到的問題是,當我最小化InternalFrame時,左下角的圖標會自動隱藏在也添加到JDesktopPane中的JPanel後面。當我拖動窗口(使窗口垂直放大)時,白色DesktopPane在默認灰色JPanel下方變爲可見。另外,當我向下拖動時,InternalFrame的圖標被顯示出來。我試圖張貼圖片,但我是新來的網站,所以我不能:()JInternalFrame圖標在最小化時移動到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);    
     } 
} 

回答

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

我個人的看法是,在JDesktopPane添加JPanel的想法是不好的。

+2

+1 * *「bad ideas」*;) – MadProgrammer

+0

@MadProgrammer謝謝!我建議他做出自己的框架(在JPanel上繪製矩形(帶有文本)(這些將是選項),拖動鼠標時可以移動),但是我將其作爲初學者很難。 –

+1

我想你可以建議使用'JLayeredPane',但是要弄清楚爲什麼OP會沿着路徑走下去有點難... – MadProgrammer