可能重复引用一个按钮:
Accessing JButtons in tabbed pane在选项卡窗格
嗨我创造Jbuttons中,并把它们添加到窗格中,然后加入窗格中的选项卡窗格,我怎么能引用从其他地方的按钮?所以引用选项卡窗格中的一个按钮?像tabbedpane.pane.button?任何帮助表示赞赏
public void initComponents(){
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();
for(Rooms room : rooms){
JPanel tmpPanel = new JPanel();
String roomName = room.getName();
int roomId = room.getId();
tabbedPane.addTab(roomName + " Room " + roomId, tmpPanel);
JPanel lightsPane = new JPanel(new BorderLayout());
lightsPane.setLayout(new GridLayout(0, 2, 0, 5));
for(Lights light : room.roomLights){
int lightId = light.getId();
JButton lights = new JButton("Off");
lights.setBackground(Color.red);
lights.addActionListener(new LightButtonEvent(roomId, lightId));
lights.setPreferredSize(new Dimension(60, 30));
lights.setBorder(BorderFactory.createRaisedBevelBorder());
JLabel lightLabel = new JLabel("Light" + lightId);
Font curFont = lightLabel.getFont();
lightLabel.setFont(new Font(curFont.getFontName(), curFont.getStyle(), 13));
lightsPane.add(lightLabel);
lights.add(lights);
lightsPane.add(lights);
tabbedPane.setTabComponentAt(0, lightspane);
}
solarLabels.add(new JLabel("", JLabel.CENTER));
UpDateGuiLabels(roomId);
JSlider heaterSlider = new JSlider(68, 73);
heaterSlider.setPaintTicks(true);
heaterSlider.setPaintLabels(true);
heaterSlider.setMajorTickSpacing(1);
heaterSlider.addChangeListener(new HeaterSliderEvent(roomId));
heaterSlider.setEnabled(false);
JButton heater = new JButton("Heater");
heater.setBackground(Color.red);
heater.addActionListener(new HeaterButtonEvent(roomId, heaterSlider));
((JPanel) tabbedPane.getComponentAt(roomId - 1)).add(heater);
((JPanel) tabbedPane.getComponentAt(roomId - 1)).add(heaterSlider);
((JPanel) tabbedPane.getComponentAt(roomId - 1)).add(solarLabels.get(roomId - 1));
}
master.add(tabbedPane, BorderLayout.CENTER);
master.setSize(800, 600);
content.add(tabbedPane);
master.setVisible(true);
}
你在这里问同样的问题两次吗?如果是这样,为什么不简单地编辑和改进原来的帖子,而不是不必要地分开讨论? – 2012-03-22 19:38:37
好抓@HovercraftFullOfEels。我发现他以前的问题更好,因为它说明了他想做什么以及为什么。所以投票结束这一个,并回答了另一个问题 – Robin 2012-03-22 22:45:39