Object[] options = {"questions", "list"};
Object selection = JOptionPane.showOptionDialog(Main.mWindow, "newDocText", "newDoc",
JOptionPane.OK_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
我使用上面的代码创建JOptionPane
。
焦点被绘制在主要选择的选项上,但我想隐藏它的完整性。这可能吗?
答案 0 :(得分:3)
而不是使用options[0]
使用null
:
Object[] options = {"questions", "list"};
Object selection = JOptionPane.showOptionDialog(Main.mWindow, "newDocText", "newDoc",
JOptionPane.OK_OPTION, JOptionPane.QUESTION_MESSAGE, null, options,null);
<强> showOptionDialog 强>
public static int showOptionDialog(Component parentComponent,
Object message,
String title,
int optionType,
int messageType,
Icon icon,
Object[] options,
Object initialValue)
initialValue - 表示默认选择的对象 对话;只有在使用选项时才有意义;可以为null
答案 1 :(得分:3)
对我而言,David Kroukamp的答案仍然会导致第一个按钮聚焦,可能是因为必须始终有一个具有焦点的组件。以下代码明确地将焦点放在JLabel上:
JLabel message = new JLabel("newDocText");
final JOptionPane pane = new JOptionPane(message, JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_OPTION, null, options);
JDialog dialog = pane.createDialog(f, "newDoc");
message.requestFocus();
dialog.setVisible(true);
Object selection = pane.getValue();
编辑:如果只有焦点的绘制是个问题,那么在对它们调用setFocusPainted(false)之后,可以将JButtons传递给JOptionPane。你可以这样做:
JButton questionsButton = new JButton("questions");
JButton listButton = new JButton("list");
questionsButton.setFocusPainted(false);
listButton.setFocusPainted(false);
Object[] options = {questionsButton, listButton};
但在这种情况下,您需要自己设置关闭对话框。我认为这是一个更复杂的解决方案。