5

私はJavaでGUIを書く必要はありませんでした。今回はスキップしargsてUI(ユーザーインターフェース)として使用することもできます。しかし、ユーザーがオプションの1つを選択できるようにする小さなGUIを作成する簡単な方法があるのではないかと思います。つまり、askUser()ユーザーがドロップダウンメニューから選択して[OK]を押すことができる機能を実装するには。私はこのトピックの学習に時間を費やしていますが、このタスクに必要なGUIのタイプがわからないことさえあります。JFrame?JPanel?Jmenu?ありがとう。

目的の関数の例を次に示します。

package trygui;

public class Main {

    public static void main(String[] args) {
        String[] choices = new String[]{"cats", "dogs"};
        int choice = askUser(choices);
        System.out.println("selected: " + choices[choice]);
    }

    static int askUser(String[] choices) {
        // create pop-up dialog
        return 0;
    }
}

更新:違いが生じる可能性がある場合は、Netbeansを使用します。

4

3 に答える 3

14

最も簡単なオプションは、JOptionPaneAPIを使用することです

ここに画像の説明を入力してください

public class TestOptionPane03 {

    public static void main(String[] args) {
        new TestOptionPane03();
    }

    public TestOptionPane03() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JPanel panel = new JPanel();
                panel.add(new JLabel("Please make a selection:"));
                DefaultComboBoxModel model = new DefaultComboBoxModel();
                model.addElement("Chocolate");
                model.addElement("Strewberry");
                model.addElement("Vanilla");
                JComboBox comboBox = new JComboBox(model);
                panel.add(comboBox);

                int result = JOptionPane.showConfirmDialog(null, panel, "Flavor", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
                switch (result) {
                    case JOptionPane.OK_OPTION:
                        System.out.println("You selected " + comboBox.getSelectedItem());
                        break;
                }

            }
        });
    }
}

ダイアログの作成方法を読むと、詳細を確認できます。

フィードバックで更新

public class TestOptionPane03 {

    public static void main(String[] args) {
        String choice = ask("Chocolate", "Strewberry", "Vanilla");
        System.out.println("You choose " + choice);
    }

    public static String ask(final String... values) {

        String result = null;

        if (EventQueue.isDispatchThread()) {

            JPanel panel = new JPanel();
            panel.add(new JLabel("Please make a selection:"));
            DefaultComboBoxModel model = new DefaultComboBoxModel();
            for (String value : values) {
                model.addElement(value);
            }
            JComboBox comboBox = new JComboBox(model);
            panel.add(comboBox);

            int iResult = JOptionPane.showConfirmDialog(null, panel, "Flavor", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
            switch (iResult) {
                case JOptionPane.OK_OPTION:
                    result = (String) comboBox.getSelectedItem();
                    break;
            }

        } else {

            Response response = new Response(values);
            try {
                SwingUtilities.invokeAndWait(response);
                result = response.getResponse();
            } catch (InterruptedException | InvocationTargetException ex) {
                ex.printStackTrace();
            }

        }

        return result;

    }

    public static class Response implements Runnable {

        private String[] values;
        private String response;

        public Response(String... values) {
            this.values = values;
        }

        @Override
        public void run() {
            response = ask(values);
        }

        public String getResponse() {
            return response;
        }
    }
}
于 2012-11-16T00:07:23.977 に答える
2

Swing GUIを作成する場合は、NetBeansなどのIDEを使用すると、WYSIWYG GUIデザイナーを簡単に使用できるため、GUI要素を所定の位置にドラッグアンドドロップして、NetBeansのGUIコードの周りにロジックコードを追加できます。出力。

「あなたのためにGUIを構築する」ために頼ることは確かにありませんが、それはあなたが一緒に働くための基盤を設定するという素晴らしい仕事をします。また、NetBeansがGUI用に生成するコードを読んで操作するだけで、Swingについて多くのことを学ぶことができます。

これは、Swingアプリの設計を開始する際の優れたアクセラレーターだと思います。

于 2012-11-15T23:57:44.523 に答える
2

尋ねた後、私はこの解決策を見つけました。簡単にするために、をaskUser()返しますString

package trygui;

import javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args) {
        String[] choices = new String[]{"cats", "dogs"};
        String choice = askUser(choices);
        System.out.println("selected: " + choice);
    }

    static String askUser(String[] choices) {
        String s = (String) JOptionPane.showInputDialog(
                null,
                "make your choice",
                "Try GUI",
                JOptionPane.PLAIN_MESSAGE,
                null,
                choices,
                choices[0]);
        return s;
    }
}

ここに画像の説明を入力してください

于 2012-11-16T00:17:08.907 に答える