Как вы размещаете кнопки вертикально на панели JOptionPane с JDialogs? - PullRequest
4 голосов
/ 05 февраля 2010

Я пытаюсь расположить три кнопки вертикально на JOptionPane, используя createDialog, но он не совсем работает с 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);

    }

}

Ответы [ 2 ]

10 голосов
/ 05 февраля 2010

Если вы хотите сложить кнопки, вам нужно добавить их на панель и добавить панель на панель параметров следующим образом:

    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, тогда у вас будет полный контроль, но будет немного больше работы, чтобы получить красивые значки панели переходов:)

1 голос
/ 18 июля 2012

Мы можем избавиться от кнопки «ОК» с помощью небольшой модификации.

        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: это значит посередине). Поэтому кнопка «ОК» опускается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...