Я довольно новичок в java, так что медведь со мной пожалуйста, в основном, внизу. У меня есть панель с вкладками для каждой из четырех комнат в комнатах Arraylist, и я создаю кнопки в каждая вкладка зависит от количества огней каждой комнаты. Как я могу связать кнопки на каждой вкладке с указанными комнатами ?. Так, например, когда я нажимаю кнопку «Свет» на вкладке «Комната 1», слушатель событий знает, что кнопка принадлежит комнате1?GUI action listeners для каждой вкладки в панели с вкладками
Любая помощь приветствуется, спасибо.
import java.util.ArrayList;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class MasterGUI extends JFrame implements ActionListener{
public MasterGUI(){
}
public void DisplayFrame(){
ArrayList<Rooms> rooms;
rooms = Building.getRoomList();
JFrame master = new JFrame("Solar Master Control Panel");
master.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container content = master.getContentPane();
content.setBackground(Color.lightGray);
JTabbedPane tabbedPane = new JTabbedPane();
JPanel tmpPanel;
for(int x = 0; x < rooms.size(); x++){
tmpPanel = new JPanel();
String roomName = rooms.get(x).getName();
int id = rooms.get(x).getId();
tabbedPane.addTab(roomName + " Room " + id, tmpPanel);
}
for(int x = 0; x < rooms.size(); x++){
for(int i = 0; i < rooms.get(x).roomLights.size(); i++){
int num = i + 1;
((JPanel) tabbedPane.getComponentAt(x)).add(new JButton("Light" + num));
}
}
master.add(tabbedPane, BorderLayout.CENTER);
master.setSize(800, 600);
content.add(tabbedPane);
master.setVisible(true);
}
public void actionPerformed(ActionEvent e){
}
Класс оболочки может работать, или 'HashMap'. –
Java имеет [для каждого цикла] (http://www.leepoint.net/notes-java/flow/loops/foreach.html), что означало бы, что вам не нужно делать все 'get (x) 'звонки. Вы также можете добавить кнопки на панель при первом ее создании вместо одного цикла, чтобы панели и другой цикл добавляли кнопки. – unholysampler