首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从另一个类访问JSlider的GUI

从另一个类访问JSlider的GUI
EN

Stack Overflow用户
提问于 2012-03-15 06:35:07
回答 1查看 602关注 0票数 0

我正在创建的每个选项卡中都添加了一个加热器JButton和一个加热器JSlider,用来关闭和打开它的加热器JButton和用来选择温度的加热器JSlider。

加热器状态预置为false,因此当我单击加热器JButton打开加热器时,

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

感谢您的帮助,谢谢。

代码语言:javascript
复制
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);
}

HEATERBUTTON类

代码语言:javascript
复制
 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);

    }
}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-15 06:44:36

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

更改:

代码语言:javascript
复制
 heater.addActionListener(new HeaterButton(roomId)); 

至:

代码语言:javascript
复制
 heater.addActionListener(new HeaterButton(roomId, slider)); 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9711345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档