2011-06-22 10 views
0

私はJTextFieldで初期値をとり、希望の通貨に対応するJCheckBoxをクリックする単純な通貨コンバータを作成しています。変換された値はJTextFieldに表示されます。基本的には、チェックした値を割り当てる方法があるかどうかを確認したいと思います。JCheckBox私は周りを見回しましたが、これに対する明確な答えを見つけることができません。チェックされたJChechboxに値を割り当てる方法は?

たとえば、現在のスターリングからユーロへの換算レートが1.12244の場合、JCheckBoxのチェック時にこの値が割り当てられるため、元の値にコンバージョン率が乗算されます。

+0

**チェックされたJCheckBoxに値を割り当てる**?これはどういう意味ですか?あなたはどのような価値を割り当てたいのですか?詳しく教えてください。 –

+0

あなたの試したことを示すコードであなたの投稿を編集してください – mKorbel

+0

JCheckBoxを "チェック済み"にしようとしていますか?またはそのオブジェクトに特定の値を割り当てることについて話していますか(Visual Studioのタグと同様) – Ahmad

答えて

1

JCheckBoxaction-listenerを割り当てて、このイベントのトリガーに変換すると簡単だと思います。確認するには、JCheckBoxは、実際に私はあなたがして、チェックボックスを使用しているかのようにあなたは、このためにButtonGroupJRadioButton年代を使用する必要があると思うあなたは​​方法

EDIT

を使用することができますチェックをするかしないです2つ以上が選択される可能性があります。 Hereは、ラジオボタンでButtonGroupとトリガアクションを使用する方法の例です。

1

これにより、チェックボックスの値が表示されます。あなたは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); 
1

上の値を変更することができ

JCheckBox cb = ...; 

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

これが最善の解決策になることができませんでしたが、あなたはこれを試すことができます。

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

JCheckBoxを使用する代わりに、@Balanivashの推奨に従ってJRadioButtonを使用できます。もっと単純かつ適切な解決策は、JComboBoxのを使用することになります。[私はこれで@Riduidelと思います。]

1

//これは私がこの本は、それが最も簡単です何enter image description here

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(); 

    } 

} 
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) 
} 
1

私もJCheckBoxのは、あなたが欲しいものを行うための最善の選択肢ではないと思われる、しかし...

は、なぜあなたはのJChを拡張しませんeckBoxクラスを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)。また、新しいチェックボックスにメソッドを提供して、通貨を反転し、他の方向の倍率を計算することもできます。

種類について

関連する問題