⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hvacpanel.java

📁 这是一个以JAVA编写的程序,本人还没有试过,是一个简单的温度控制系统
💻 JAVA
字号:
package net.sf.dz.view.tcp.client;import java.awt.Color;import java.awt.Dimension;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.util.HashMap;import java.util.Iterator;import java.util.LinkedList;import java.util.List;import java.util.Map;import java.util.Set;import java.util.StringTokenizer;import java.util.TreeMap;import javax.swing.BorderFactory;import javax.swing.JLabel;import javax.swing.JPanel;import net.sf.dz.util.chart.Chart;public class HvacPanel extends JPanel {    private ClientDaemon daemon;    private String unitName;    private Chart hvacChart;    private List chartList = new LinkedList();        private Chart signalChart;        private List zoneData = new LinkedList();        public HvacPanel(ClientDaemon daemon, String unitName) {            this.daemon = daemon;        this.unitName = unitName;                setBorder(BorderFactory.createTitledBorder("HVAC Controller"));                GridBagLayout layout = new GridBagLayout();        GridBagConstraints cs = new GridBagConstraints();                setLayout(layout);                cs.gridx = 0;        cs.gridy = 0;        cs.gridwidth = 1;        cs.gridheight = 1;        cs.weightx = 1;        cs.weighty = 1;        cs.fill = GridBagConstraints.BOTH;                hvacChart = new Chart();        hvacChart.setBorder(BorderFactory.createTitledBorder("Unit Status"));        hvacChart.setBackground(Color.black);        hvacChart.setGridColor(Color.darkGray);        hvacChart.setPreferredSize(new Dimension(100, 100));                List hvacLegend = new LinkedList();                hvacLegend.add("Mode");        hvacLegend.add("Demand");        hvacLegend.add("Stage");        hvacLegend.add("Speed");                hvacChart.setLegend(hvacLegend);                Map hvacColors = new HashMap();                hvacColors.put("Mode", Color.green);        hvacColors.put("Demand", Color.red);        hvacColors.put("Stage", Color.yellow);        hvacColors.put("Speed", Color.cyan);                hvacChart.setChartColors(hvacColors);                layout.setConstraints(hvacChart, cs);        add(hvacChart);                hvacChart.repaint();                cs.gridx++;        signalChart = new Chart();        signalChart.setBorder(BorderFactory.createTitledBorder("Zone Signal"));        signalChart.setBackground(Color.black);        signalChart.setGridColor(Color.darkGray);        signalChart.setPreferredSize(new Dimension(100, 100));                layout.setConstraints(signalChart, cs);        add(signalChart);    }    public void setZones(Set zoneNameSet) {            List colorList = new LinkedList();                colorList.add(Color.red);        colorList.add(Color.yellow);        colorList.add(Color.green);        colorList.add(Color.cyan);        colorList.add(Color.magenta);                Map colorMap = new HashMap();        int idx = 0;                List legend = new LinkedList();                for ( Iterator i = zoneNameSet.iterator(); i.hasNext(); ) {                    String name = i.next().toString();                    legend.add(name);            colorMap.put(name, colorList.get(idx++ % colorList.size()));        }                signalChart.setLegend(legend);        signalChart.setChartColors(colorMap);        signalChart.repaint();    }        public void parse(StringTokenizer st) throws Throwable {            String target = st.nextToken();        String value = st.nextToken();                if ( "mode".equals(target) ) {                    hvacChart.record("Mode", System.currentTimeMillis(), Double.parseDouble(value));                        // An ugly fix, but required nevertheless                        daemon.parse("status:preferences:mode:" + value);        } else if ( "stage".equals(target) ) {                    hvacChart.record("Stage", System.currentTimeMillis(), Double.parseDouble(value));                } else if ( "demand".equals(target) ) {                    hvacChart.record("Demand", System.currentTimeMillis(), Double.parseDouble(value));        } else if ( "fan".equals(target) ) {                    hvacChart.record("Speed", System.currentTimeMillis(), Double.parseDouble(value));        } else if ( "signal".equals(target) ) {                    String zone = value;            String signalObject = st.nextToken();                        if ( signalObject.startsWith("E") ) {                            String error = signalObject.substring(2);                                // VT: FIXME: I don't know what to do with it here...                // Probably just leave it hanging                        } else {                            double signal = Double.parseDouble(signalObject.toString());                signalChart.record(zone, System.currentTimeMillis(), signal);            }                    } else {                    throw new IllegalArgumentException("Unsupported target: '" + target + "'");        }    }        /*    public void actionPerformed(ActionEvent e) {            Object source = e.getSource();                if ( source == modeSelector ) {                    int mode = modeSelector.getSelectedIndex() - 1;                        daemon.send("unit:" + unitName + ":ac:mode:" + mode);        }    }     */    public void setHvacGraph(boolean enabled) {            hvacChart.setVisible(enabled);        checkVisible();    }    public void setZoneGraph(boolean enabled) {            signalChart.setVisible(enabled);        checkVisible();    }        private void checkVisible() {            // If neither HVAC nor signal chart are visible, there's nothing to        // display                // VT: FIXME: It would be a smart thing to display a short HVAC mode        // and status icon instead of a chart                boolean hidden = !hvacChart.isVisible() && !signalChart.isVisible();                setVisible(!hidden);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -