Swing JDialog에서 "X"버튼 제거
JDialog
제목 표시 줄 에서 닫기 버튼 ( "X")을 제거하는 방법이 있습니까?
를 호출하여 전체 대화 제목을 제거 할 수 dialog.setUndecorated(true)
있지만 이는 대화를 더 이상 이동할 수 없음을 의미합니다.
dialog.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE)
버튼이 어떤 작업 도 수행 하지 않도록 실행할 수도 있습니다 .
그 외에는 X
완전히 제거 할 방법이 없다고 생각합니다 .
dialog.setUndecorated(true)
제목 표시 줄을 제거하기 위해 전화 할 수 있다고 생각합니다 . 하지만 'X'에 대해서는 확실하지 않습니다.
그러나 사용자가 대화 상자를 쉽게 닫을 수 있기를 원하므로 'X'를 제거하는 것은 좋은 생각이 아닐 수 있습니다.
가장 좋은 방법은 사용자가 또는를 사용하여 'X'를 클릭 할 때 발생하는 일을 제어 dialog.setDefaultCloseOperation
하는 것 WindowListener
입니다.
Java 1.7 (AKA Dolphin 또는 Java 7)부터는 창에서 닫기 버튼을 비활성화하거나 제거 할 수 없습니다. 를 사용하여 최대화 버튼을 제거 / 비활성화 frame.setResizable(false)
할 수 있으며 java.awt.Dialog
또는을 (를) 확장하는 클래스를 사용하여 최소화 및 최대화 버튼을 제거 할 수 있습니다 javax.swing.JDialog
. 를 사용하여 제목 표시 줄, 테두리 및 단추를 제거 frame.setUndecorated(true)
할 수 있으며 frame.setDefaultLookAndFeelDecorated(true)
, (JFrame 또는 JDialog라고 가정하면 ) 제목 표시 줄에있는 모든 단추의 가시성을 완전히 제어 할 수 있습니다 (일부 플랫폼 간 호환성 및 OS 통합 손실 ). . 이것이 현재 JDK로 가능한 모든 컨트롤입니다.
내 경험은 다음과 같습니다.
- 사용 시도
setUndecorated(true)
: 전체를Dialog
보이지 않게 만들었습니다 . - 시도 함
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE)
: 이것은 동작을 전혀 변경하지 않았습니다. 내 대화 상자가 여전히 닫혔습니다. 에 기본 닫기 작업을 설정DO_NOTHING_ON_CLOSE
받는 위임 닫기 작업을windowClosing()
등록 방법WindowListener
.
나를 위해 일한 것은 다음과 같습니다.
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
//Remove any existing WindowListeners
for ( WindowListener wl : this.getWindowListeners())
this.removeWindowListener(wl);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
if ("Optional condition") {
JOptionPane.showMessageDialog(null, "You cannot close this window");
}
}
});
추측에 따라 PL & F 장식으로 설정하고 구성 요소를 이름으로 제거하십시오.
static public void removeButtons(Component c){
if (c instanceof AbstractButton){
String accn = c.getAccessibleContext().getAccessibleName();
Container p=c.getParent();
//log.debug("remove button %s from %s",accn,p.getClass().getName());
c.getParent().remove(c);
}
else if (c instanceof Container){
//log.debug("processing components of %s",c.getClass().getName());
Component[] comps = ((Container)c).getComponents();
for(int i = 0; i<comps.length; ++i)
removeButtons(comps[i]);
}
}
참고 URL : https://stackoverflow.com/questions/942056/remove-x-button-in-swing-jdialog
'Programing' 카테고리의 다른 글
웹 인터페이스를 통해 TeamCity 서버 다시 시작 (0) | 2020.12.09 |
---|---|
Internet Explorer 용 양식 제출에서 문자 인코딩 설정 (0) | 2020.12.09 |
MySQL 범위에서 누락 된 날짜를 채우는 방법은 무엇입니까? (0) | 2020.12.09 |
web.xml을 사용하는 이유는 무엇입니까? (0) | 2020.12.09 |
요청 사양에서 ApplicationController 메서드를 스텁하는 방법 (0) | 2020.12.09 |