프로그램에서 여러 개의 showInputDialog를 사용하고 있습니다. 이 입력 중 하나가 팝업되면 입력을 수신 할 때까지 백그라운드의 다른 모든 창을 정지시킵니다. 다른 창을 고정시키지 않는 방법이 있습니까?showInputDialog 다른 창을 고정시킵니다.
0
A
답변
3
"고정"을 사용하면 사용자가 다른 창에 액세스 할 수 없다는 것을 의미하는 경우 키는 새 대화 상자를 모달이 아닌 대화 상자로 만드는 것입니다. JOptionPane에서 JDialog를 추출한 다음 모달이 아닌 방식으로 표시하도록 선택할 수 있습니다. JOptionPane API이 방법을 보여줍니다. "직접 사용 :"이라는 제목의 절을 검색하십시오.
편집 : Andrew 주에서도 마찬가지입니다! 1+
대신 JDialog
비 모달을 사용합니다 .... 코드
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.*;
public class Foo {
public static void main(String[] args) {
final JTextField textfield = new JTextField(10);
textfield.setFocusable(false);
final JPanel panel = new JPanel();
panel.add(textfield);
panel.add(new JButton(new AbstractAction("Push Me") {
private JOptionPane optionPane;
private JDialog dialog;
private JTextField optionTextField = new JTextField(10);
@Override
public void actionPerformed(ActionEvent arg0) {
if (dialog == null) {
JPanel optionPanel = new JPanel(new BorderLayout());
optionPanel.add(new JLabel("Enter some stuff"),
BorderLayout.PAGE_START);
optionPanel.add(optionTextField, BorderLayout.CENTER);
optionPane = new JOptionPane(optionPanel,
JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION);
dialog = optionPane.createDialog(panel, "Get More Info");
dialog.setModal(false);
dialog.addComponentListener(new ComponentAdapter() {
@Override
public void componentHidden(ComponentEvent arg0) {
Integer value = (Integer) optionPane.getValue();
if (value == null) {
return;
}
if (value == JOptionPane.OK_OPTION) {
textfield.setText(optionTextField.getText());
}
}
});
}
dialog.setVisible(true);
}
}));
JFrame frame = new JFrame("Frame");
frame.add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
3
을 재생합니다. 자세한 내용은 How to Use Modality in Dialogs을 참조하십시오.
관련 문제
- 1. 모달 대화 상자 표시 (messageBox) 응용 프로그램의 다른 창을 고정시킵니다.
- 2. showInputDialog 창에 필드를 추가하려면 어떻게합니까?
- 3. showInputDialog 취소시 오류
- 4. java.lang.StringIndexOutOfBoundsException 및 showInputDialog
- 5. JOptionPane showInputDialog 위치
- 6. 사용자 정의 버튼이있는 JOptionPane showInputDialog
- 7. MediaPlayer.Play()가 UI를 고정시킵니다.
- 8. Android ObjectAnimator가 UI를 고정시킵니다.
- 9. Prefuse가 JFrame을 고정시킵니다.
- 10. Pthread가 stdout을 고정시킵니다.
- 11. 다른 스레드에서 작동하는 QObject를 제어하고 이벤트 대기열을 우회하여 GUI를 고정시킵니다.
- 12. Android Handler가 GUI를 고정시킵니다.
- 13. Regex가 Ruby를 완전히 고정시킵니다
- 14. deleteRowsAtIndexPaths가 UITableView를 고정시킵니다.
- 15. VB.Net 루프가 프로그램을 고정시킵니다.
- 16. getDrawingCache가 앱을 고정시킵니다.
- 17. 스레드가 GUI를 완전히 고정시킵니다.
- 18. AsyncTask가 UI를 고정시킵니다.
- 19. Timer_Tick이 프로그램을 고정시킵니다.
- 20. 원래 창을 유지하면서 다른 창을 종료하는 방법
- 21. Android : 팝업 창을 이동하고이 창을 다른 창을 차단하지 못하게하는 방법
- 22. Dojo - ScrollingTabControllerMenuButton이 Firefox의 TabContainer를 고정시킵니다.
- 23. 리치 텍스트 디스플레이가 시스템을 고정시킵니다.
- 24. Devexpress 탐색 메뉴가 화면을 고정시킵니다.
- 25. JTable 헤더의 JButton에있는 ActionListener가 애플리케이션을 고정시킵니다.
- 26. 자바 스윙 버튼이 프로그램을 고정시킵니다.
- 27. 다른 창을 QWidget으로 임베드
- 28. 앱이 다른 작업을 수행하는 동안 키보드 후크가 키보드를 고정시킵니다.
- 29. iOS7 AVMutableVideoCompositionLayerInstruction이 비디오 프레임을 고정시킵니다.
- 30. genymotion이 전체 우분투 데스크탑을 고정시킵니다.
* "직접 사용 :" "*라는 제목의 절을 찾으십시오. +1 그것은'JOptionPane'의 기능을 재현하기위한 번거 로움입니다. –
나는 이것을 체크했으나 inputdialogs와 어떻게 작동하는지 보지 못했습니까? tablename = JOptionPane.showInputDialog ("tablename * (대문자 사용) 입력") 스타일로 입력 대화 상자가 있습니다. – Looptech