我正在尝试使用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);
}
}
答案 0 :(得分: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);
我不知道除了手动浏览JOptionPane的内容并将其删除之外,你怎么能摆脱OK按钮。您可以随时创建自己的JDialog然后您可以完全控制,但是获得更好的joption窗格图标会有更多的工作:)
答案 1 :(得分:1)
我们可以稍微修改一下摆脱'确定'按钮。
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,1);
dialog = optionPane.createDialog(null, "Icon/Text Button");
dialog.setVisible(true);
当你将面板添加到选项面板时,只需指定位置(在这种情况下它是1:这意味着在中间)。因此'确定'按钮会关闭。