2012-01-08 13 views
0

我搜索谷歌回答我的問題,並找到它,但我不知道如何使用它。 q1。如何將圖片添加到我的程序和文本中。 q2。當我打開新的(我讀dispole和setVisiable,但我不能這樣做)我怎麼能關閉舊窗戶。 我的程序:添加圖片到SUPER並關閉舊窗口來打開新的

public class Main extends JFrame implements ActionListener { 

    public static void main (String[] args){ 
     new Main().setVisible(true); 

    } 

    private static String[] args; // OTWORZ inny program 
    private Main(){ 

     super("PROJEKT"); // tytuł okna 
     setSize(600,600); // rozmiar okna 
     setResizable(false); // blokuj powiększenie manualne okna 
     setDefaultCloseOperation(EXIT_ON_CLOSE); // na krzyzuku zamknie 

     Toolkit zestaw = Toolkit.getDefaultToolkit(); // get defaulttoolkit , zestaw który pobierze 
     Dimension rozmiarEkranu = zestaw.getScreenSize(); // rozdzielczosc ekranu a nastepnie 
     int wysEkranu = rozmiarEkranu.height;   // wstawi otworzy okno na środku 
     int szerEkranu = rozmiarEkranu.width; 

     // umiesc ramke na srodku ekranu i dodaj tytuł 

     setSize(szerEkranu/2, wysEkranu/2); 
     setLocation(szerEkranu/4, wysEkranu/4); 

     setLayout (new BorderLayout()); 
     /* 
     * FlowLayout 
     * GridBagLayout 
     * GridLayout 
     * BorderLayout 
     */ 

     JButton klawisz = new JButton ("START"); 
     klawisz.addActionListener (new Action1()); 
     add(klawisz, BorderLayout.SOUTH); 

     JMenuBar bar = new JMenuBar(); // Górne MENU 
     JMenu file = new JMenu("Plik"); // wstaw PLIK do menu 
     JMenuItem close = new JMenuItem("Zamknij"); // do pliku wstaw zamknij 
     close.addActionListener(this); 
     file.addSeparator(); // wstaw przerwe 
     file.add(close); 

     bar.add(file); 
     setJMenuBar (bar); 


    } 
    static class Action1 implements ActionListener{ 
    public void actionPerformed(ActionEvent e) { 

     Menu.main(args); // otwiera inny program 
     new Main().setVisible(false); // HERE I DONT KNOW HOW TO CLOSE OLD WINDOW 
    } 


    } 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     String name = e.getActionCommand(); 

     if(name.equals("Zamknij")) { // zamknij program jak wcisne przycisk zamknij 
      System.exit(0); 

     } 

    } 
} 
+0

*「我閱讀有關dispole和setVisiable,但我無法做到這一點」*我並不感到驚訝,因爲你甚至無法正確拼寫它們。 :( – 2012-01-08 17:54:13

+0

@AndrewThompson:英語似乎並不是OP的第一語言,這可能有助於解釋他的拼寫問題。 – 2012-01-08 17:56:28

+0

@HovercraftFullOfEels在很多情況下,我會忽略拼寫錯誤(注意我沒有評論「cant」。 ),但不能當它們可以從JavaDocs複製/粘貼(或至少檢查)* OTOH促使我評論的一件事是純粹懶惰地輸入所有小寫字母即使有語言不符合有案例的概念,它不是*太難*難以記住每個句子的首字母大寫,以及單詞'我'。 – 2012-01-08 18:21:08

回答

2

1)不創造新形象新JFrame,不這樣做,這些containers是存在於內存中,直到目前的JVM實例中存在

2)看CardLayout ,那麼你永遠不需要類似的東西

2

你的問題是你的主要類的新實例調用setVisible(false),並且這個實例不是當前正在顯示的那個實例。要回答你直接的問題,你需要調用setVisible(false)上主要的當前實例,你將與Main.this得到:

Main.this.setVisible(false); 

但話雖如此,我與mKorbel(1+他),你甚至不應該這樣做,因爲它會導致難看的用戶體驗,而應該通過使用CardLayout交換視圖

+0

我把你的代碼給我的主,不幸的是不工作。關閉窗口,當我打開新的。 – Lukii007 2012-01-11 17:29:50

相關問題