私は現在、のインスタンスからメソッドをJDialog
呼び出して作成したものを持っています:createDialog()
JOptionPane
JOptionPane pane = new JOptionPane(myPanel, JOptionPane.PLAIN_MESSAGE,JOptionPane.DEFAULT_OPTION, null, new Object[]{}, null);
dialog = pane.createDialog(null, "");
JDialog
を呼び出しsetUndecorated(true)
てからタイトル バーを削除できるようにしたかったのJDialog
ですがIllegalComponentStateException: The dialog is displayable
、プログラムを実行しようとすると例外が発生します。
私の知る限り、 を呼び出す前にダイアログが表示されていないため、 APIの理解をはるかに超えてdialog.show()
ダイアログをインスタンス化すると、ダイアログは実際に「表示可能」であると思います。pane.createDialog()
JDialog
setVisible(false)
を使用する前に電話をかけようとしましsetUndecorated(true)
たが、役に立ちませんでした。
JDialog
このタイプのタイトルバーを削除する方法、またはまったく可能である方法について、助けをいただければ幸いです。このタイプの質問に対する他の多くの回答からわかるように、法線からタイトルバーを削除するのは簡単ですが、作成されたスルーJDialog
では機能しないようです。JDialog
createDialog()
関連コード:
input= new JTextField(50);
input.addKeyListener(new ConsoleKeyListener());
input.addAncestorListener( new RequestFocusListener() );
field = new JTextArea();
field.setEditable(false);
field.setLineWrap(true);
JScrollPane area = new JScrollPane(field, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
field.setRows(10);
field.setText(consoleText);
JPanel myPanel = new JPanel();
myPanel.setLayout(new BorderLayout(0,0));
myPanel.add(input, BorderLayout.PAGE_END);
myPanel.add(area, BorderLayout.PAGE_START);
input.setFocusable(true);
input.requestFocus();
int result = 101;
//int result = JOptionPane.showOptionDialog(null, myPanel,"", JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE, null, new Object[]{}, null);
JOptionPane pane = new JOptionPane(myPanel, JOptionPane.PLAIN_MESSAGE, JOptionPane.DEFAULT_OPTION, null, new Object[]{}, null);
dialog = pane.createDialog(null, "");
dialog.setVisible(false);
dialog.setUndecorated(true);
//dialog.undecorated = true;
//dialog.setOpacity(0.55f);
removeMinMaxClose(dialog);
removeMinMaxClose(pane);
removeMinMaxClose(myPanel);
dialog.getRootPane().setOpaque(false);
//JDialog dialog = new JDialog();
//dialog.setVisible(false);
//dialog.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
//myPanel.setUndecorated(true);
//dialog.setUndecorated(true);
//dialog.getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG);
//dialog.setBounds( 100, 100, 300, 200 );
dialog.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
System.out.println("yo");
}
});
dialog.setVisible(true);
dialog.show();