如何使用JDialogs在JOptionPane上垂直堆叠按钮?

use*_*840 4 java user-interface swing

我正在尝试使用createDialog将三个按钮垂直堆叠到JOptionPane上,但它不能完全使用GridLayout.此外,我不知道如何摆脱'确定​​'按钮.你可能想知道我为什么这样做,但这是我被告知这样做的方式.我想我可以使用JFrame,但我不认为这与JOptionPane相处得很好,因为这就是我希望按钮堆叠的地方.

它应该是这样的:
| 需要帮助|
| 帮助我|
| 计数|

我需要在某些时候添加动作侦听器的可访问性,但在我甚至可以达到这一点之前,这似乎变得复杂.

import java.awt.Container;
import java.awt.GridLayout;

import javax.swing.*;
public class ThreeButtons {

    static JDialog dialog;
    public static void main(String[] args) {

        JOptionPane optionPane = new JOptionPane();
        optionPane.setMessage("Set Message");
        optionPane.setMessageType(JOptionPane.INFORMATION_MESSAGE);
        optionPane.setLayout(new GridLayout(3,1));
        String[] buttonTxt = {"Need Help","Help Me","Counting"};
        JButton[] buttons = new JButton[buttonTxt.length];
        for (int i = 0; i < buttonTxt.length; i++)
        {
            buttons[i] = new JButton(buttonTxt[i]); 
            optionPane.add(buttons[i]);
        }
        dialog = optionPane.createDialog(null, "Icon/Text Button");
        dialog.setVisible(true);

    }

}
Run Code Online (Sandbox Code Playgroud)

wil*_*ood 10

如果要堆叠按钮,则需要将它们添加到面板,并将面板添加到选项窗格,如下所示:

    JDialog dialog = null;
    JOptionPane optionPane = new JOptionPane();
    optionPane.setMessage("Set Message");
    optionPane.setMessageType(JOptionPane.INFORMATION_MESSAGE);

    JPanel panel = new JPanel();
    panel.setLayout(new GridLayout(3,1));
    String[] buttonTxt = {"Need Help","Help Me","Counting"};
    JButton[] buttons = new JButton[buttonTxt.length];
    for (int i = 0; i < buttonTxt.length; i++)
    {
        buttons[i] = new JButton(buttonTxt[i]);
        panel.add(buttons[i]);
    }
    optionPane.setOptionType(JOptionPane.DEFAULT_OPTION);
    optionPane.add(panel);
    dialog = optionPane.createDialog(null, "Icon/Text Button");
    dialog.setVisible(true);
Run Code Online (Sandbox Code Playgroud)

除了手动浏览JOptionPane的内容并将其删除之外,我不知道你怎么能摆脱OK按钮.您可以随时创建自己的JDialog然后您可以完全控制,但是获得更好的joption窗格图标会有更多的工作:)