Кнопка отмены JDialog

Это только произошло бы, если интерпретатор Java производит машинный код, который является на самом деле лучше оптимизирован, чем машинный код, который Ваш компилятор генерирует для кода C++, который Вы пишете, до такой степени, когда код C++ медленнее, чем Java и стоимость интерпретации.

Однако разногласия того фактического случая являются довольно низкими - если, возможно, Java не имеет очень правильно написанную библиотеку, и у Вас есть своя собственная плохо записанная библиотека C++.

7
задан Konrad Rudolph 17 August 2009 в 06:58
поделиться

3 ответа

Я не думаю, что это возможно с JDialog без его расширения.

Вы можете использовать JOptionPane.showOptionDialog () (или, возможно, один из других методов show), передав вам JButtons. хотите, чтобы их использовали.

Если переданные параметры являются компонентами, они будут отображаться как обычно, поэтому вы можете сделать что-то вроде этого:

int optionType = JOptionPane.DEFAULT_OPTION;
int messageType = JOptionPane.PLAIN_MESSAGE; // no standard icon

JButton ok = new JButton("ok");
JButton cancel = new JButton("cancel");
//add any handlers to the buttons
...
//construct options
Object[] selValues = { ok, cancel };

//show dialog as normal, selected index will be returned.
int res = JOptionPane.showOptionDialog(null, "message",
        "title", optionType, messageType, null, selValues,
        selValues[0]);
1
ответ дан 7 December 2019 в 05:26
поделиться

Однострочное решение

t.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
   .put(KeyStroke.getKeyStroke("ESCAPE"), btnCancel.getAction());

, где t - любой компонент (кроме JButton), например JTextField в диалоговом окне.

2
ответ дан 7 December 2019 в 05:26
поделиться

All you have to do is attach the action listener to the button and call dialog.setVisible(false) inside of it.

1
ответ дан 7 December 2019 в 05:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: