2013-06-09 2 views
0

Здравствуйте, я пишу своеобразное Меню для программы шифрования, которую я пишу. Я закончил его, и теперь я хочу попытаться создать для него графический интерфейс. Вот код для первого меню:Закрытие JFrame после нажатия кнопки Java

package matrix_with_GUI; 

import javax.swing.*; 
import java.awt.event.* ; 
import java.awt.* ; 

public class Main_Menu extends JFrame implements ActionListener{ 
    private JButton action1 = new JButton (""); 
    private JButton action2 = new JButton (""); 
    private JPanel pane = new JPanel(); 
    private JLabel lbl; 

public static void main(String[] args) { 
    Main_Menu main = new Main_Menu(); 
} 

public Main_Menu(){ 
    super(); 
    JPanel pane=new JPanel(); 
    setTitle ("Start Menu") ; 
    JFrame frame = new JFrame(""); 

    setVisible(true); 
    setSize (380, 260) ; 
    setLocation (450, 200) ; 
    frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE) ; 

    action1 = new JButton("Start"); 
    action2 = new JButton("Exit"); 
    lbl = new JLabel ("Welcome to the Matrix Encoder/Decoder!!!"); 
    setLayout(new FlowLayout()); 

    add (lbl) ; 
    add(action1, BorderLayout.CENTER); 
    action1.addActionListener (this); 
    add(action2, BorderLayout.CENTER); 
    action2.addActionListener (this); 
} 
@Override 
public void actionPerformed(ActionEvent event) { 
    // TODO Auto-generated method stub 
    OptionsMenu x = new OptionsMenu(); 
    if (event.getSource() == action1) 
    { 
     System.exit(0); 
     x.OptionsMenu(); 
    } 
    else if(event.getSource() == action2){ 
     System.exit(0); 
    } 

} 

} Когда кнопка Start нажата, новое меню появляется все прекрасно и хорошо, но первое меню остается открытым. Есть ли способ закрыть это первое меню И открыть второе меню с помощью первой кнопки? Я очень новичок в GUI, поэтому самое простое решение было бы очень полезно. На боковой ноте есть простой способ переместить кнопку «Пуск» на следующую строку? Благодаря

+2

Пожалуйста, проверьте: [в потребительной из-множественных jframes-хорошо-плохо -practice] (http://stackoverflow.com/questions/9554636/the-use-of-multiple-jframes-good-bad-practice) –

+1

'System.exit (0);' приведет к остановке JVM. – Maroun

+1

1) Не выдвигайте рамки или другие контейнеры верхнего уровня. Вместо этого создайте & используйте экземпляр одного. 2) Не устанавливайте размер контейнеров верхнего уровня. Вместо этого разместите контент и вызовите 'pack()'. –

ответ

2

У вас есть 2 варианта: вы можете использовать прослушиватель окон, или вы можете использовать метод dispose(). Для того, чтобы сделать Dispose() просто введите

* This is better to be used with subframes and 2nd level windows.* 

this.dispose(); 

или проверить эту ссылку для использования окна слушателя

Closing JFrame

+0

спасибо человеку, это работает как шарм! –

+0

без проблем! Всегда рад помочь :) Мне дали подарок сверху, поэтому я помогаю всем остальным :) – user2277872

+0

@ user2398954 не забудьте принять ответ .... – pinkpanther

1

Для того, чтобы закрыть Main_Menu, вы можете просто вызвать метод dispose:

this.dispose(); 

вместо вызова System.exit(0), который прервет JVM в целом.

Смежные вопросы