无法使OptionDialog中的按钮显示在新行上。 它们都出现在一行中,但我想将它们放在不同的行上。
我还尝试设置一个框架来添加到OptionDialog(设置最大宽度),但它对我来说也没有用。
任何想法/帮助/建议表示赞赏。
Object[] options = { "Button1", "Button2", "Button3", "Button4",
"Button5 On a newLine\n\n", "Button 6", "Button 7" };
int x = JOptionPane.showOptionDialog(null, "Choose a button..", "Title",
JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE,
null, options, options[0]);
答案 0 :(得分:5)
考虑这个替代方案。
import javax.swing.*;
class Options {
public static void main(String[] args) throws Exception {
SwingUtilities.invokeLater( new Runnable() {
public void run() {
Object[] options = {
"Option 1",
"Option 2",
"Option 3",
"Option 4",
"Option 5",
"Option 6",
"Option 7",
"None of the above"
};
JComboBox optionList = new JComboBox(options);
optionList.setSelectedIndex(7);
JOptionPane.showMessageDialog(null, optionList, "Title",
JOptionPane.QUESTION_MESSAGE);
}
});
}
}
答案 1 :(得分:2)
使用JOptionPane中的Option Dialog无法做到这一点,但您仍然可以通过扩展JDialog来创建自己的对话窗口,这样您就可以使用组件所需的布局。
答案 2 :(得分:1)
如果要在多行中断按钮,请创建自己的OptionPane类。
但是,这样做会破坏一堆UI标准。
答案 3 :(得分:1)
与上述相同的答案,但更具体:
Object[] options = outputcdirs;
JComboBox optionList = new JComboBox(outputcdirs);
optionList.setSelectedIndex(0);
JPanel jpan = new JPanel ();
jpan.add(new JLabel("Select dirs:"));
jpan.add(optionList);
int n = JOptionPane.showOptionDialog(this, jpan, "text...",
JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
null,
null);
if (n != -1)
n = optionList.getSelectedIndex();
if (n == -1)
throw new Exception("No selection: ...");
String value = outputcdirs[n];