1

私はコラージュのプロジェクト (レストランのようなもの) を行っていますが、Java はあまり得意ではありません (彼らは私たちに教えようとはしませんでした)。このプロジェクトの原則は、選択したラジオ ボタンとチェック ボックスを示すメッセージを表示することです。

食事を選択するための 5 つのラジオ ボタンと、おかずを選択するための 5 つのチェック ボックスがあります。ラジオボタンを機能させることはできましたが、チェックボックスを機能させる方法がわかりません...

これはラジオ ボタンのコードです (これは 5 つすべてに当てはまります)。

 private void jRadioButton1ItemStateChanged(java.awt.event.ItemEvent evt) {
if (evt.getSource().equals(jRadioButton1)) { Meal= jRadioButton1.getText(); //Meal is a String }

チェックボックスに同じコードを試しましたが、複数を選択したにもかかわらず、メッセージに1つのおかずしか表示されません...

メッセージを表示するボタンのコード:

 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
JOptionPane.showMessageDialog(rootPane, "You have chosen:\n" + String.valueOf(Meal) + "\n" + String.valueOf(SideDish)); }

So basically, if anyone is willing to help, please tell me how to make the check boxes work... that every selected check box is shown in the message, like this:

You have chosen:
Pizza //meal
Ketchup //selected side dish #1
Chilli peppers //selected side dish #2
Feta cheese //selected side dish #3

私の質問が明確であることを願っています...

4

4 に答える 4

3

0 個以上のチェックボックスのテキストを表示する必要があるため、1 つのオプションのみを保持するのではなく、それぞれが選択されているかどうかを確認し、結果のテキストを連結する必要があります。また、チェックボックスは独立してチェックを入れたり外したりできるので、常にチェックするよりも、ボタンを押した瞬間だけチェックした方がいいかもしれません。例えば:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

  SideDish = "";
  if (jCheckBox1.getState()))
  {
    SideDish += jCheckBox1.getText();
  }
  ...
  if (jCheckBox5.getState()))
  {
    SideDish += ", " + jCheckBox5.getText();
  }

  JOptionPane.showMessageDialog(rootPane, "You have chosen:\n" + Meal + "\n" + SideDish);
}

これは単なる図であり、カンマの区切りが常に適切に表示されるとは限りません - 演習として修正を残します :-)

より洗練された解決策は、おかずを収集するために文字列のコレクションを使用することです。繰り返しますが、これに向けてコードを改善してみてください。

String.valueOf()ところで、sを出力する必要はないのでString、上記のコードから削除しました。また、Java コーディング規約では、変数/フィールド名を小文字で開始します。

于 2012-06-19T15:49:32.983 に答える
2

複数のチェックボックスを同時に選択できるため、チェックされた値をコレクションに収集する必要があります。 Set<String>おかずは一度しか選べないので思い浮かびます。

また、ラジオ ボタンを選択するたびに前の選択が上書きされるため、この問題は発生しませんでしたが、対応するチェックボックスがオフになっている場合は、セットからアイテムを削除する必要があります。

:Set<>はインターフェイスです。実際に使用するには実装クラスが必要です。あなたの場合はうまくいきます( SetHashSetHashSet<>で利用可能なメソッドのドキュメントを参照してください)

おかずの選択肢を表示するときは、セット内の要素を列挙し、それらを 1 つずつ出力するか、要素を連結して結果を文字列にまとめることができます。

: チェックボックスに直接アクセスできる場合は、セットが必要ない場合もあります。どのおかずが選択されているかを表示するときに、各チェックボックスの状態を確認し、上で概説したように選択肢の文字列を蓄積するだけです。

于 2012-06-19T15:49:56.127 に答える
1

ここに例があります

おかずが4つあるとしましょう

Vector<JCheckBox> boxes = new Vector<JCheckBox>
boxes.add(checkbox1) .... .add(checkbox4);

ボタンをクリックすると

Vector<String> sideDishes = new Vector<String>();
for(int i=0; i<boxes.size(); i++){
   if(boxes.elementAt(i).isSelected(){
      sideDishes.add(boxes.elementAt(i).getText();
   }
}
于 2012-06-19T15:58:58.180 に答える
0

問題を分析する方法と、Google や他の検索エンジン サイトを使用する方法を最初に学習する必要があると思います。このドキュメントを読んで、例を見てみてください。

于 2012-06-19T15:51:04.400 に答える