2012-09-05 80 views
3
Object[] options = {"questions", "list"}; 

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

我使用上面的代码来创建一个JOptionPaneJOptionPane焦点隐藏

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

回答

3

对我来说,大卫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(); 

编辑:如果只有画的焦点是一个问题,你可以通过Jbutton将到JOptionPane的,你叫他们setFocusPainted(假)之后。你可以这样做:

JButton questionsButton = new JButton("questions"); 
    JButton listButton = new JButton("list"); 
    questionsButton.setFocusPainted(false); 
    listButton.setFocusPainted(false); 
    Object[] options = {questionsButton, listButton}; 

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

+0

如何将按钮传递给JOptionPane? – Karlovsky120

+0

添加了(不推荐)的答案。如果你真的需要这样做(有焦点,但没有绘制),那么我建议在一个自定义的JDialog中编写所有东西,而不是使用JOptionPane。 – lbalazscs

2

而不是使用options[0]使用null

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

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

java docs

showOptionDialog

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

初值 - 该对象表示对话框的默认选择 ;只有使用选项才有意义;可以为空

+0

不错的抓住:-),虽然我通过查看你的答案了解了问题,至于OP期望的是什么:-) –

+1

你是否运行了你的答案?对我而言,第一个按钮仍然处于选中状态 - 可能是因为总是有一个焦点组件。 – lbalazscs

+0

是的,它不工作... – Karlovsky120