1

私は、初期値を取得する単純な通貨コンバーターを作成しています。次に、ユーザーが目的の通貨に対応するものをJTextFieldクリックすると、変換された値が別のに表示されます。基本的に、私が見回したチェックに値を割り当てる方法があり、これに対する明確な答えを見つけることができないことを知りたいのですが、助けていただければ幸いです。JCheckBoxJTextFieldJCheckBox

たとえば、現在の英ポンドからユーロへの換算レートが1.12244の場合、この値はJCheckBoxがチェックされたときに割り当てられるため、元の値に換算レートが掛けられます。

4

6 に答える 6

1

私はまた、JCheckBoxはあなたが望むことをするための最良のオプションではないと思います、しかし...

JCheckBoxクラスをCurrencyConverterCheckBoxに拡張して、通貨と変換の現在の値を引数として渡すことができます。例えば:

    public class CurrencyConverterCheckBox extends JCheckBox {
       private String from;
       private String to;
       private double value;

       public CurrencyConverterCheckBox(String from, String to, double value) {
           super();
           this.from = from;
           this.to = to;
           this.value = value;
       }
    }

その後、ユーザーがチェックボックスをクリックすると、変換を実行できるようになります。チェックボックスの横にラベルを付けることもできます(USDからEUR)。また、新しいチェックボックスで、通貨を反転して反対方向の倍率を計算する方法を提供することもできます。

敬具

于 2011-06-22T11:13:45.703 に答える
1

に を割り当てて、このイベントのトリガーで変換を行うと、より簡単になると思いaction-listenerますJCheckBox。がチェックされているかどうかを確認するには、メソッドJCheckBoxを使用できますisSelected()

編集

JRadioButton実際には、これには'sを使用する必要があると思います。ButtonGroupチェックボックスを使用しているかのように、複数が選択されている可能性があります。ButtonGroup を使用してラジオ ボタンでアクションをトリガーする方法の例を次に示します

于 2011-06-22T09:13:01.207 に答える
1

最も簡単なのは、次のようなものです。

String[] ccys = {"USD", "EUR", "CHF", "JPY"};

public void initUI(){
 ...

 ButtonGroup grp = new ButtonGroup();

 for(String ccy : ccys){
  JCheckBox cb = new JCheckBox(ccy);
  cb.setActionCommand(ccy);
  cb.addActionListener(this);
  grp.add(cb);

  ...(add CheckBox to ui)
 }
}


private double getRate(String ccy){
  ...(retrieve the current conversion rate, f.ex from a map)
}

public void actionPerformed(ActionEvent evt){
  Double rate = getRate(evt.getActionCommand());
  ...(calculation, display)
}
于 2011-06-22T10:27:51.770 に答える
1

// これは完全に機能するコードです。これが役立つことを願っていますここに画像の説明を入力

public class CConvertor extends JFrame {        

    private  JLabel result;
    private  JCheckBox pk;
    private  JCheckBox ch;

    public CConvertor(){

        result = new JLabel();
        ch = new JCheckBox();
        pk = new JCheckBox();
        init();
    }

    public void init(){
        setTitle("JCheckBox Test");
        getContentPane().setLayout(new FlowLayout());
        add(result);
        add(new JLabel("        "));        
        add(new JLabel(" China "));
        add(ch);
        add(new JLabel(" Pakistan "));
        add(pk);
        setSize(400,80);
        pk.addActionListener(new ActionListener() {         

            public void actionPerformed(ActionEvent e) {
                ch.setSelected(false);
                result.setText("Pakistan selected");

            }
        });
        ch.addActionListener(new ActionListener() {         
            public void actionPerformed(ActionEvent e) {
                pk.setSelected(false);
                result.setText("China is Selected");

            }
        });

        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);

    }

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

    }

}
于 2011-06-22T09:42:41.663 に答える
1

これにより、チェックボックスの値が得られます。

JCheckBox cb = ...;

// Determine status
boolean isSel = cb.isSelected();
if (isSel) {
    // The checkbox is now selected
} else {
    // The checkbox is now deselected
}

JCheckBox のアクション リスナーの値を変更できます。

// Create an action
Action action = new AbstractAction("CheckBox Label") {
    // This method is called when the button is pressed
    public void actionPerformed(ActionEvent evt) {
        // Perform action
        JCheckBox cb = (JCheckBox)evt.getSource();

        // Determine status
        boolean isSel = cb.isSelected();
        if (isSel) {
            // The checkbox is now selected
        } else {
            // The checkbox is now deselected
        }
    }
};

// Create the checkbox
JCheckBox checkBox = new JCheckBox(action);
于 2011-06-22T09:18:15.307 に答える
1

これは最善の解決策ではありませんが、これを試すことができます。

  1. JCheckBox の配列を取得します。
  2. 一度に 1 つのチェックボックスだけが選択されるようにしてください。
  3. 通貨換算値の配列を取得します。
  4. 選択したチェックボックスのインデックスに基づいて、配列から通貨換算値を取得します。

JCheckBox を使用する代わりに、@Balanivash の提案に従って JRadioButton を使用できます。よりシンプルで適切な解決策は、JComboBox を使用することです。[私はこれで @Riduidel と一緒です。]

于 2011-06-22T09:38:49.323 に答える