2010-02-05 107 views
4

我想使用createDialog将三个按钮垂直堆叠到JOptionPane上,但它并不完全适用于GridLayout。另外,我不确定如何摆脱“确定”按钮。你可能想知道我为什么这样做,但这是我被告知要这样做的方式。我想我可以使用JFrame,但我认为这不适合JOptionPane,因为这是我想要按钮叠加的地方。如何使用JDialogs在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); 

    } 

} 

回答

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); 

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

+0

谢谢!!!!!!!!!!!! – user266840 2010-02-05 09:05:03

+0

没问题。现在给我一个大胖子,并标记为正确的答案。 :) – willcodejavaforfood 2010-02-05 09:09:04

1

我们可以稍微修改“OK”按钮。

 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:中间这意味着)。因此“确定”按钮下降。

+0

这并没有摆脱确定按钮,它只是把它移下来。 – Torque 2013-06-20 12:21:25