1

JbuttonがクリックされたときにJLabelのテキストを変更しようとしていますが、ボタンをクリックしたときにテキストが空になる理由がわかりません。データベースからデータを取得しようとしています。

ここに私のラベルがあります

labelDisplay = new JLabel[7];

for(int z = 0; z<7; z++){
    labelDisplay[z] = new JLabel("d");
    labelDisplay[z].setForeground(new Color(230,230,230));
    if( z%2==0)
        labelDisplay[z].setBounds(130,65,160,25);
    else
        labelDisplay[z].setBounds(130,30,160,25);
}

日付を取得するためのクラスが機能していると確信しています。テストします。これが私のactionListenerです:

    public class ButtonHandler implements ActionListener
        {
            public void actionPerformed(ActionEvent e)
            {
                if(e.getSource() == extendB)
                {
                    ExtensionForm extend = new ExtensionForm();
                    extend.setVisible(true);
                }
                else if(e.getSource()== searchB)
                {
                    //get text from the textField
                    String guest = guestIDTF.getText();
                    //parse the string to integer for retrieving of date
                    int id = Integer.parseInt(guest);
                    GuestsInfo guestInfo = new GuestsInfo(id);
                    Room roomInfo = new Room(id);
                    searchB.setText(""+id);
                    System.out.println(""+guestInfo.getFirstName());
                    labelDisplay[1].setText(""+id);
                    String labels[] = {guestInfo.getFirstName()+" "+guestInfo.getLastName(),
                            ""+roomInfo.getRoomNo(),roomInfo.getRoomType(),guestInfo.getTime(),"11:00",
                            ""+guestInfo.getDeposit(),"30"};
                    labels = new String[7];
                    for(int z = 0; z<labels.length; z++){
                        labelDisplay[z].setText(labels[z]);
                    }

                }
        }
    }

コードからわかるように、ラベルテキストの初期値を入力しましたが、文字「d」ですが、ボタンをクリックすると空になります。アクセサメソッドは実際に機能しているため、エラーの原因は私のactionListener。助けてください

コンストラクターを編集します。1ではなくidにする必要があります。

ボタンのactionListenerのコードは次のとおりです

ButtonHandler bh = new ButtonHandler();
searchB = new JButton("search");
searchB.setBounds(190,30,75,25);
searchB.addActionListener(bh);
4

1 に答える 1

3
 labelDisplay[1].setText(""+id);

 String labels[] = {guestInfo.getFirstName()+" "+guestInfo.getLastName(),
      ""+roomInfo.getRoomNo(),roomInfo.getRoomType(), guestInfo.getTime(),
      "11:00", ""+guestInfo.getDeposit(),"30"};

 labels = new String[7];

 for(int z = 0; z<labels.length; z++){
      labelDisplay[z].setText(labels[z]);
 }

ラベルを有効なものに設定することは決してありません。削除するlabels = new String[7];

申し訳ありませんが、コードをチェックする必要があります。

于 2012-10-07T16:58:50.827 に答える