2015-03-04 6 views
0

Как я могу закодировать кнопку, которая при нажатии закрывает текущий JFrame и открывает новый?Открытие нового JFrame и закрытие предыдущего после нажатия кнопки

Это то, что я до сих пор, но старый кадр остается открытым:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
    practise1 s = new practise1(); 
    s.setVisible(true); 
} 

Я попытался с помощью .close() после первого {, но это дает мне ошибку.

+3

Какую ошибку? Более конкретно. – Crazyjavahacking

+1

См. Также [* Использование нескольких JFrames, Good/Bad Practice? *] (Http://stackoverflow.com/q/9554636/230513) – trashgod

+1

Это звучит как случай для «CardLayout», упомянутый в ссылке, предоставленной @trashgod. –

ответ

2

Если вы планируете использовать исходный JFrame позже, используйте setVisible(false) на оригинальной JFrame. Если вы планируете закрыть первый JFrame и не использовать его повторно, вы можете использовать dispose().

+1

Иногда лучше направлять OP по правильному пути, чем отвечать на их точный вопрос. Это как-раз тот случай. Как бы то ни было, этот совет ведет их дальше по пути, которому они не должны следовать, и вызовет много проблем. –

0
public void actionPerformed(ActionEvent e) 
    { 
    if(e.getSource() == button) 
    { 
     test = new JFrame(); 
     test.setSize(300,300); 
     test.setVisible (true); 
     this.dispose(); 

    } 
    } 

УДАЛИТЬ ПОСЛЕ создания нового кадра.

+0

Иногда лучше направлять OP по правильному пути, чем отвечать на их точный вопрос. Это как-раз тот случай. Как бы то ни было, этот совет ведет их дальше по пути, которому они не должны следовать, и вызовет много проблем. –

+0

OP запросил решение для mutliple JFrames. Конечно, несколько фреймов - не лучшее решение. И я уверен, что OP не специалист с графическими интерфейсами, так почему бы не позволить OP играть с несколькими фреймами? Рано или поздно OP заметит, что несколько фреймов слишком сложно поддерживать. – Raildex

+0

Если бы ОП спросил, как стрелять себе в ногу. Вы бы помогли? –

0

Спасибо за помощь всем. Я получил его работу, используя this.dispose(); Метод

-1

Допустим, текущий кадр FirstFrame и нажав на кнопку JButton идет в NewFrame

import javax.swing.*; 

public class FirstFrame extends Jframe implements ActionListener{ 


    JButton button;  

    public FirstFrame(){ 
    setVisible(true); 
    setSize(500,500); 

    button=new JButton("Click me"); 
    button.addActionListner(this); 
    add(button);  
    } 

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

    public void actionPerformed(ActionEvent e) 
    { 
    if(e.getSource()==button) 
    { 
     NewFrame nf=new NewFrame(); // Clicking on the Button will OPEN new Frame in NewFrame.java file 
     dispose(); //this method will close the FirstFrame 
    } 
    } 


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