JButton をクリックしたときに JDialog のラベルのテキストを変更したいのですが、ラベルは他のクラスにあるため、フレーム クラスからアクセスする方法がわかりません。そこで、ダイアログの状態をチェックするアクション リスナーのアイデアを思いつきました。- JDialog が表示されている場合、このデータを取得し、このデータをラベルに setText します。これは可能ですか?
これが私のルームクラスのコードです。
public void rooms()
{
bh = new ButtonHandler();
presidentialRoom = new JButton[presidentialRoomNo.length];
deluxeRoom = new JButton[deluxeRoomNo.length];
classicRoom = new JButton[classicRoomNo.length];
for(int x = 0;x<classicRoomNo.length;x++){
//classic rooms
ImageIcon imageC = new ImageIcon("C:\\Users\\John\\workspace" +
"\\SystemTest\\src\\Images\\classicRooms.JPG"); // image
classicRoom[x] = new JButton(classicRoomNo[x],imageC);
classicRoom[x].setBackground(Color.WHITE);
classicRoom[x].setBorder(new CompoundBorder(BorderFactory.createEtchedBorder(Color.WHITE,Color.GRAY),
BorderFactory.createEtchedBorder(Color.WHITE,Color.GRAY)));
classicRoom[x].addActionListener(bh);
classicSubPanel.add(classicRoom[x]);
//deluxe rooms
ImageIcon imageD = new ImageIcon("C:\\Users\\John\\workspace" +
"\\SystemTest\\src\\Images\\deluxeRooms.JPG"); // image
deluxeRoom[x] = new JButton(deluxeRoomNo[x],imageD);
deluxeRoom[x].setBackground(Color.WHITE);
deluxeRoom[x].setBorder(new CompoundBorder(BorderFactory.createEtchedBorder(Color.WHITE,Color.GRAY),
BorderFactory.createEtchedBorder(Color.WHITE,Color.GRAY)));
deluxeRoom[x].addActionListener(bh);
deluxeSubPanel.add(deluxeRoom[x]);
//presidential rooms
ImageIcon imageP = new ImageIcon("C:\\Users\\John\\workspace" +
"\\SystemTest\\src\\Images\\presidentialRooms.JPG"); // image
presidentialRoom[x] = new JButton(presidentialRoomNo[x],imageP);
presidentialRoom[x].setBackground(Color.WHITE);
presidentialRoom[x].setBorder(new CompoundBorder(BorderFactory.createEtchedBorder(Color.WHITE,Color.GRAY),
BorderFactory.createEtchedBorder(Color.WHITE,Color.GRAY)));
presidentialRoom[x].addActionListener(bh);
presidentialSubPanel.add(presidentialRoom[x]);
}
}
ここの各ボタンは RoomProfile クラスにアクセスします
public class ButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
RoomProfile rooms = new RoomProfile();
room.setVisible(true);
}
}
RoomProfile のコードは次のとおりです。
public void createLabels()
{
labels = new JLabel[topTextLabels.length];
inputLabels = new JLabel[topTextLabels.length];
for(int x = 0; x<topTextLabels.length;x++)
{
labels[x] = new JLabel(topTextLabels[x]);
labels[x].setForeground(Color.WHITE);
inputLabels[x] = new JLabel("test");
inputLabels[x].setForeground(Color.WHITE);
}
}
変更したいテキストは、ユーザーにその部屋のプロファイルを表示させたい部屋クラスのボタンをクリックしたときの「inputLabels[]」です。
入力ラベルには、データベースからのデータが表示されます。