закрытия моего JFrame, не используя кнопку закрытия (X) и завершение виртуальной машины Java

голоса
2

У меня есть кадр, который инстанцирует другой кадр, но я не хочу использовать кнопку закрытия (х) на реализованный кадре., поэтому я создал кнопку. как я код, что эта кнопка может использоваться, чтобы закрыть инстанцированный кадр, не выходя из виртуальной машины Java.

Задан 09/12/2008 в 19:16
источник пользователем
На других языках...                            


6 ответов

голоса
5

Имея свою собственную кнопку закрытия странно UI и его следует избегать.

Чтобы избавиться от кадра, когда ваша собственная кнопка нажата, вы можете просто сделать:

jFrame.setVisible(false);

или

jFrame.dispose();

если вы хотите, чтобы избавиться от него полностью.

На кадрах вы не хотите, чтобы выйти из виртуальной машины Java на кнопке закрытия времени щелкнули указать:

jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

или

jFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

В зависимости от поведения вы хотите.

Ответил 10/01/2009 в 09:55
источник пользователем

голоса
0

Вы можете попробовать SetVisible () или Dispose () функции

Для вашего основного класса ...

    public class Main {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    //new DemoTryCatch()
    new Frame1();
}

}

Для первого класса кадра ...

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;


public class Frame1 extends JFrame{
JButton newFrame=new JButton("Frame 2");
public Frame1() {
    // TODO Auto-generated constructor stub
    super("Frame 1");
    add(newFrame);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setSize(300,300);
    newFrame.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            // TODO Auto-generated method stub
            new Frame2();\\instantiating your new Frame
        }
    });
}
}

Для реализованным кадра ...

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;


public class Frame2 extends JFrame{

JButton CloseFrame2=new JButton("CloseFrame2");
public Frame2() {
    // TODO Auto-generated constructor stub
    super("Frame 1");
    add(CloseFrame2);
    setVisible(true);
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    setSize(300,300);
    CloseFrame2.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
            setVisible(false);\\You could also use dispose()
        }
    });
}
}
Ответил 16/06/2014 в 10:53
источник пользователем

голоса
0

Я согласен с Томом, я думаю, что в коде вы написали:

[framename].setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

EXIT_ON_CLOSE означает, что он будет выходить из приложения полностью.

Вы можете закрыть окно, нажав на его кнопку X с помощью:

[framename].setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

Вот пример кода:

package answers;

import javax.swing.JFrame;

public class Answers {

    public static void main(String[] args) {

        //frame 1
        JFrame frame1 = new JFrame("this is frame 1");
        frame1.setSize(500, 500);
        frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        frame1.setLocationRelativeTo(null); // ignore this its just to place frame 1 on the center

        //now this is the code for frame2
        //frame 2
        JFrame frame2 = new JFrame("this is frame 2");
        frame2.setSize(500, 500);
        frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        frame1.setVisible(true);
        frame2.setVisible(true);

    }

}
Ответил 31/01/2014 в 15:16
источник пользователем

голоса
0

Вы могли бы использовать setVisible(false)для того , чтобы просто скрыть инстанцированный JFrame из поля зрения

Ответил 22/10/2013 в 01:52
источник пользователем

голоса
0

Использовать это:

jFrame.setUndecorated(true);
jFrame.getRootPane().setWindowDecorationStyle(JRootPane.NONE);
Ответил 16/11/2009 в 16:46
источник пользователем

голоса
-1

Я не уверен , если им правильно , но вы могли бы назвать dispose(). Javadoc предполагает , вы можете открыть его , хотя с помощью show().

Ответил 12/07/2013 в 00:05
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more