0

ユーザーが背景色として2色のいずれかを選択できるようにダイアログをポップアップしようとしています。特に見栄えを良くするために、問題の色で表示する2つの選択肢を指定します。

import java.awt.Color;
import java.awt.Label;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

public class JOptionPaneTest extends JFrame{

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

    public JOptionPaneTest() {
        Object[] possibilities = new Object[2];
        JButton black = new JButton("Black");
        JButton white = new JButton("White");
        black.setBackground(Color.black);
        white.setBackground(Color.white);
        black.setForeground(Color.white);
        white.setForeground(Color.black);
        possibilities[0] = black;
        possibilities[1] = white;

        JButton l = (JButton)JOptionPane.showInputDialog(this, 
                "Please specify the background color", "Background check",
                JOptionPane.QUESTION_MESSAGE, null, possibilities,
                possibilities[0]);
        System.out.println("" + l);
    }
}

ただし、これは機能しません。JButtonの代わりにJButton.toString()の戻り値がドロップダウンに表示されます。また、JLabelとLabelを試してみました。APIによると、JButtonはコンポーネントであるため、そのままダイアログに追加する必要があります。JButtonを'message'パラメーターに追加すると、期待どおりに表示されます。

私が間違っていることについて何か考えはありますか?

4

2 に答える 2

0

showInputDialogのjbutton(可能性)の配列ではなく文字列の配列である必要がありますが、この方法では背景色はありません。showInputDialog()でそのようなカラーチューザーを実装する方法はないと思います

String[] str = {"aaa", "bbb"};

JButton l = (JButton)JOptionPane.showInputDialog(this, 
            "Please specify the background color", "Background check",
            JOptionPane.QUESTION_MESSAGE, null, str, str[0]);
于 2011-03-24T21:56:27.277 に答える
0

Java APIは、この点については少し不明確です。options上部には、の解釈方法が説明さoptionsれていますが、ボタンの行に描かれている、ユーザーが選択できるYES、NO、CANCEL...の可能性があります。あなたは、について話しているselectionValuesので、API(という名前の最後のメソッドに移動showInputDialog)は明確です:

selectionValues-可能な選択を提供するオブジェクトの配列selectionValues
を表す最適な方法を決定するのはUI次第ですが、通常はJComboBox、JList、またはJTextFieldが使用されます。

私の経験では、渡されたオブジェクトはselectionValuesを使用して表示されtoString()、結果はJComboBoxまたはで表示されるJListため、カスタムペイントで選択値を表示することはできません。そのための独自のダイアログを実装する必要があります。

messageをとして渡すことができるComponentので、についての凡例をユーザーに提供できますselectionValues。ここでは、背景色のラベルを表示して、使用可能な各色を示し、から値を選択するための支援を提供できますselectionValues

于 2011-03-24T22:07:45.590 に答える