두 개 (또는 이상) JFrames을 동시에 표시하고 싶습니다.
기본 닫기 단추를 사용하여 그 중 하나를 닫으면 다른 프레임이 여전히 표시되어야합니다.다른 JFrame을 닫지 않고 닫으시겠습니까?
어떻게하면됩니까?
두 개 (또는 이상) JFrames을 동시에 표시하고 싶습니다.
기본 닫기 단추를 사용하여 그 중 하나를 닫으면 다른 프레임이 여전히 표시되어야합니다.다른 JFrame을 닫지 않고 닫으시겠습니까?
어떻게하면됩니까?
당신은 JFrame
를 닫을 때 응용 프로그램이 종료하지에서, documentation에서
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE)
대신
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
사용한다면 : (
DO_NOTHING_ON_CLOSE
WindowCons에 정의 됨 tants) : 아무것도하지 마라. 프로그램이 등록 된 WindowListener 객체의 windowClosing 메서드에서 작업을 처리하도록합니다.HIDE_ON_CLOSE
(WindowConstants에 정의) : 등록 된 WindowListener 객체를 호출 한 후 프레임을 자동으로 숨 깁니다.DISPOSE_ON_CLOSE
(WindowConstants에 정의) : 등록 된 WindowListener 객체를 호출 한 후 프레임을 자동으로 숨기고 처리합니다.EXIT_ON_CLOSE
(JFrame에서 정의 됨) : 시스템 종료 메소드를 사용하여 응용 프로그램을 종료하십시오. 이 기능은 응용 프로그램에서만 사용하십시오. 다시 동일한 프레임을 표시하려는 경우 당신은 당신의 JFrame
에 setVisible(false)
을 사용할 수 있습니다 :
이 질문이 명확하기 전에, 여전히 유용 할 수 있습니다 내 대답했다.
그렇지 않으면 dispose()
에서 remove all of the native screen resources으로 전화하십시오.
도움이 되었습니까?
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class TwoJFrames {
public static void main(String[] args) {
int nb = 4;
if (args != null && args.length > 0) {
nb = Integer.parseInt(args[0]);
}
final int frameCount = nb;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
for (int i = 0; i < frameCount; i++) {
JFrame frame = new JFrame("Frame number " + i);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
JPanel p = new JPanel(new BorderLayout());
p.add(new JLabel("Click on the corner to close..."), BorderLayout.CENTER);
frame.setContentPane(p);
frame.setSize(200, 200);
frame.setLocation(100 + 20 * i, 100 + 20 * i);
frame.setVisible(true);
}
}
});
}
}
그 것이 유용합니다. 감사합니다! – Keating
감사합니다.하지만 오른쪽 상단 모서리에있는 닫기 버튼으로 창을 닫습니다. setVisible (false)를 확실히 사용하지 않고 스레드를 중지해야합니다. – Keating
나는 내가 어떤 mothed를 오버라이드해야한다고 생각하지만, 나는 어떤 mothed 모르지만 나는 그것이 닫는 mothed 아니라고 생각합니다. – Keating
나는 무엇을 성취하려고하는지 잘 모르겠다. 질문을 편집하고 무엇을하려고하고 어떤 것이 효과가 없는지에 대한 정보를 추가 할 수 있습니까? –