1

月曜日、火曜日、水曜日、木曜日、金曜日の5つのチェックボックスがあります。これらのチェックボックスのいずれかが選択されているときに、これらのチェックボックスから値を取得しようとしています。しかし、それらのすべてが選択されていない場合、選択されていないものは印刷時にnull値を持つことに気付きました。間にヌル値を入れずに選択された値のみを印刷するにはどうすればよいですか。それは、System.out.print();火曜日と木曜日だけを選択すると仮定すると、次のような応答が得られますnull tuesday null thursday null

以下は私がしたことです。

これがコードです

private void jButton2MouseClicked(java.awt.event.MouseEvent evt) 
{
    System.out.print(mon+ " " +tue+" "+wed +" "+thus+" " +fri); 
    JOptionPane.showMessageDialog(null, mon+ " " +tue+" "+wed +" "+thus+" " +fri);

}                                     

private void mondayBoxItemStateChanged(java.awt.event.ItemEvent evt) { 
   if(mondayBox.isSelected())
   {
       mon = mondayBox.getText();

   } 
   else
   {
     mon = " ";
   }
}                                          

private void tuesdayBoxItemStateChanged(java.awt.event.ItemEvent evt)
{
   if(tuesdayBox.isSelected())
   {
       tue = tuesdayBox.getText();
   }
   else
   {
       tue = "";
   }// TODO add your handling code here:
}                                           

private void wedBoxItemStateChanged(java.awt.event.ItemEvent evt) {
   if(wedBox.isSelected())
   {
       wed = wedBox.getText();
   }else
   {
       wed = "";
   }        // TODO add your handling code here:
}                                       

private void thurBoxItemStateChanged(java.awt.event.ItemEvent evt) {
   if(thurBox.isSelected())
   {
       thus = thurBox.getText();
   }else
   {
       thus = "";
   }         // TODO add your handling code here:
}                                        

private void friBoxItemStateChanged(java.awt.event.ItemEvent evt) { 
if(friBox.isSelected())
   {
       fri = friBox.getText();
   }else
   {
       fri = "";
   }        
}                           
4

2 に答える 2

0

解決策は実は簡単です。クラス コンテキストで etc を宣言tue, wed, monし、空の String に初期化します""。すべてnullが消えます。例えば:

class MyPanel extends JPanel
{
  String tue = "";
  String wed = "";
  .........
  JCheckBox tuesDayBox;

}
于 2013-10-24T15:13:06.290 に答える
0

これらのすべての変数「mon」、「tue」、「wed」などは、CheckBox が状態を変更した場合にのみ空に設定されるため、null を返します。

これを試して:

btnSelected.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                JOptionPane.showMessageDialog(null, getSelected());
            }
        });

public String getSelected() {
    String days = "";
    for (Component c : getComponents()) {
        if (c instanceof JCheckBox)
            if (((JCheckBox) c).isSelected())
                days += ((JCheckBox) c).getText() + ",";
    }
    return days;
}

ここで行っているのは、現在のパネルのすべてのコンポーネントを検証することです。コンポーネントがチェックボックスであり、選択されている場合、そのテキストを文字列「days」に追加します。

于 2013-10-24T15:07:33.747 に答える