2

JComboBoxに(またはより一般的なJPanel、おそらく?)を追加したいとしJRadioButtonますが、それを行う最も簡単な方法は何でしょうか?

疑似的には、そのうちの1つに複数の選択肢が含まれるラジオボタングループは、次のようになります。

O天気
O締約国
O{メタ、疑似}-科学
O動物

ここで、{}はドロップダウンリストになります。ここでの秘訣は、ドロップダウンリストまたはラベル「-science」のいずれかをクリックすると、ラジオボタンがアクティブになり、UIの境界線とそのすべての凝ったものが表示されることです。

ありがとう :)

4

2 に答える 2

3

私はこのような答えを出すのは嫌いですが、この場合はそれが最善だと思います...

これは非常に非標準のUIコンポーネントのようです。あなたがちょうどしたなら、それははるかに良いUXでしょう:

O The weather
O Parties
O meta-science
O pseudo-science
O Animals

ユーザーはあなたが提案しているコンポーネントのタイプに精通しておらず、リスト内の他のオプションとは非常に矛盾しています。より標準的な規則を使用することを強くお勧めします。


私のより良い判断に反して、私はあなたに次のことを提示しますComboBoxRadioButton
それは完全ではなく、それを使用することを提案しませんが、それはあなたが望むもののように見えます。

import java.awt.FlowLayout;

import javax.swing.AbstractButton;
import javax.swing.ButtonGroup;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JToggleButton;

public class ComboBoxRadioButton extends JRadioButton {

    private JLabel beforeText, afterText;
    private JComboBox comboBox;

    public ComboBoxRadioButton(String beforeTxt, JComboBox comboBox, 
                                             String afterText) {
        this.comboBox = comboBox;
        this.beforeText = new JLabel("    " + beforeTxt);
        this.afterText = new JLabel(afterText);
        comboBox.setSelectedIndex(0);
        setLayout(new FlowLayout());
        setModel(new JToggleButton.ToggleButtonModel());
        add(this.beforeText);
        add(this.comboBox);
        add(this.afterText);
    }

    public static void main(String[] args) {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel mainPane = new JPanel();
        ButtonGroup group = new ButtonGroup();
        AbstractButton b2 = new JRadioButton("Java Swing");
        AbstractButton b3 = new ComboBoxRadioButton(
                "It's gonna be a", new JComboBox(new String[] { "good", "bad",
                "rainy" }), "day!");
        AbstractButton b4 = new JRadioButton("After the combo");
        group.add(b2);
        group.add(b3);
        group.add(b4);
        mainPane.add(b2);
        mainPane.add(b3);
        mainPane.add(b4);
        f.add(mainPane);
        f.pack();
        f.setVisible(true);
    }
}
于 2011-01-27T15:43:11.253 に答える
0

私はジャスティンの答えが好きですが、別の代替案:

すべてのオプションを1つのJComboBoxに入れます。

あなたが本当にあなたの質問からルートを取りたいのなら、それは可能です。これを達成するための最良の方法は次のとおりです。

  • 左側にJRadioButton、中央にCombo、右側にラベルが付いたJPanelを作成します。
  • パネルのクリックをキャッチするマウスリスナーを追加します。
  • 境界線、レイアウト、および場合によっては他のUIアイテムを微調整して、見栄えを良くします。
于 2011-01-27T15:59:47.237 に答える