Java 从另一个类访问JSlider的GUI

Java 从另一个类访问JSlider的GUI,java,swing,jbutton,jslider,Java,Swing,Jbutton,Jslider,我正在为我创建的每个选项卡添加加热器按钮和加热器JSlider,加热器按钮用于关闭和打开,加热器JSlider用于选择温度 JSlider状态预设为false,因此当我单击加热器按钮打开加热器时 我需要它将JSlider的状态设置为TRUE,如何在加热器按钮类中访问加热器JSlider?如果不是的话,还有什么其他方法可以做到这一点呢 谢谢你的帮助 import java.util.ArrayList; import java.awt.*; import javax.swing.*; import

我正在为我创建的每个选项卡添加加热器按钮和加热器JSlider,加热器按钮用于关闭和打开,加热器JSlider用于选择温度

JSlider状态预设为false,因此当我单击加热器按钮打开加热器时

我需要它将JSlider的状态设置为TRUE,如何在加热器按钮类中访问加热器JSlider?如果不是的话,还有什么其他方法可以做到这一点呢

谢谢你的帮助

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 roomId = rooms.get(x).getId();
        tabbedPane.addTab(roomName + " Room " + roomId, tmpPanel);

        for(int i = 0; i < rooms.get(x).roomLights.size(); i++){
            int lightId = rooms.get(x).roomLights.get(i).getId();
            JButton lights = new JButton("Light" + lightId);
            lights.setBackground(Color.red);
            lights.addActionListener(new LightButton(roomId, lightId));
            ((JPanel) tabbedPane.getComponentAt(x)).add(lights);
        }

        JButton heater = new JButton("Heater");
        heater.setBackground(Color.red);
        heater.addActionListener(new HeaterButton(roomId));
        JSlider heaterSlider = new JSlider(68, 73);
        heaterSlider.setPaintTicks(true);
        heaterSlider.setPaintLabels(true);
        heaterSlider.setMajorTickSpacing(1);
        heaterSlider.addChangeListener(new HeaterSlider(roomId));
        heaterSlider.setEnabled(false);
        ((JPanel) tabbedPane.getComponentAt(x)).add(heater);
        ((JPanel) tabbedPane.getComponentAt(x)).add(heaterSlider);
    }
    master.add(tabbedPane, BorderLayout.CENTER);
    master.setSize(800, 600);
    content.add(tabbedPane);
    master.setVisible(true);
}
import java.util.ArrayList;
导入java.awt.*;
导入javax.swing.*;
导入java.awt.event.*;
公共类MasterGUI扩展JFrame实现ActionListener{
公共MasterGUI(){
}
公共void DisplayFrame(){
ArrayList房间;
房间=Building.getRoomList();
JFrame master=新JFrame(“太阳能主控制面板”);
master.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
容器内容=master.getContentPane();
内容。背景(颜色。浅灰色);
JTabbedPane tabbedPane=新的JTabbedPane();
JPanel-tmpPanel;
对于(int x=0;x
加热按钮类

 import java.util.ArrayList;
 import java.awt.*;
 import javax.swing.*;
 import java.awt.event.*;

public class HeaterButton implements ActionListener{
int roomNumber;

public HeaterButton(int room){
roomNumber = room;
}

public void actionPerformed(ActionEvent e){
ArrayList<Rooms> rooms;
rooms = Building.getRoomList();

    if(rooms.get(roomNumber - 1).roomHeater.getHeaterStatus() == true){
        rooms.get(roomNumber - 1).roomHeater.setHeaterOff();
        ((JButton)e.getSource()).setBackground(Color.red);

    }else{
        rooms.get(roomNumber - 1).roomHeater.setHeaterOn();
        ((JButton)e.getSource()).setBackground(Color.green);

    }
}
}
import java.util.ArrayList;
导入java.awt.*;
导入javax.swing.*;
导入java.awt.event.*;
公共类HeaterButton实现ActionListener{
房间号;
公共加热器按钮(内部房间){
房间号=房间;
}
已执行的公共无效操作(操作事件e){
ArrayList房间;
房间=Building.getRoomList();
if(rooms.get(roomNumber-1).roomhearter.gethearterstatus()==true){
rooms.get(roomNumber-1).roomhearter.setHeaterOff();
((JButton)e.getSource()).setBackground(Color.red);
}否则{
rooms.get(roomNumber-1).roomhearter.setHeaterOn();
((JButton)e.getSource()).setBackground(Color.green);
}
}
}

首先创建滑块,然后将其传递给按钮

更改:

 heater.addActionListener(new HeaterButton(roomId)); 
致:


您应该查看命令模式()。HeaterButton类有点令人困惑,因为它没有按钮。Swing有一个Action类,您可以将它用作接口,而不是ActionListener。这样,您就可以给按钮一个要执行的特定操作:)
 heater.addActionListener(new HeaterButton(roomId, slider));