3
Object[] options = {"questions", "list"};

Object selection = JOptionPane.showOptionDialog(Main.mWindow, "newDocText", "newDoc",
JOptionPane.OK_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]);

我使用上面的代码来创建一个JOptionPane.

焦点画在主要选定的选项上,但我想完全隐藏它。那可能吗?

4

2 回答 2

3

而不是使用options[0]use null

Object[] options = {"questions", "list"};

Object selection = JOptionPane.showOptionDialog(Main.mWindow, "newDocText", "newDoc",
JOptionPane.OK_OPTION, JOptionPane.QUESTION_MESSAGE, null, options,null);

根据java文档

显示选项对话框

public static int showOptionDialog(Component parentComponent,
                                   Object message,
                                   String title,
                                   int optionType,
                                   int messageType,
                                   Icon icon,
                                   Object[] options,
                                   Object initialValue)

initialValue - 表示对话框默认选择的对象;只有在使用 options 时才有意义;可以为空

于 2012-09-05T14:47:21.530 回答
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};

但在这种情况下,您需要自己设置对话框的关闭。我认为这是更复杂的解决方案。

于 2012-09-05T15:16:55.730 回答