用于坦克水位观测器的Java硬编码项目。我想知道重复界面的原因是什么。我只需要b'c3RyaW5nZmllbGREYXRh'
,Value
,Alarm
接口。
这是使用Water_Tank
我也尝试过Netbeans。
Geany 1.26
我希望只有3个名为package waterlvlobserver;
import java.awt.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
interface WaterLevelObserver {
public void update(int waterLevel);
}
class watertank extends javax.swing.JFrame implements WaterLevelObserver {
public void update(int waterLevel) {
}
private JLabel watertanklbl;
private JSlider slider;
private JLabel dicrease;
private JLabel increase;
public watertank() {
setSize(300, 300);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
JPanel watertank1 = new JPanel(new FlowLayout());
watertanklbl = new JLabel("Water Tank");
watertanklbl.setFont(new Font("", 1, 20));
watertanklbl.setHorizontalAlignment(JLabel.CENTER);
watertank1.add(watertanklbl);
add("North", watertank1);
JPanel center = new JPanel(new FlowLayout());
dicrease = new JLabel("-");
dicrease.setFont(new Font("", 1, 20));
center.add(dicrease);
slider = new JSlider();
center.add(slider);
add(center);
Splitter v = new Splitter();
Alarm a = new Alarm();
slider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent evt) {
int x = slider.getValue();
String y = Integer.toString(x);
v.getValuetxt().setText(y);
if (x > 50) {
a.getOnbtn().setEnabled(true);
a.getOffbtn().setEnabled(false);
} else {
a.getOnbtn().setEnabled(false);
a.getOffbtn().setEnabled(true);
}
}
});
setVisible(true);
pack();
}
}
class Splitter extends javax.swing.JFrame implements WaterLevelObserver {
public void update(int waterLevel) {
}
private final JLabel valuelbl;
private JTextField valuetxt;
Splitter() {
setSize(300, 300);
setLocationRelativeTo(null);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
valuelbl = new JLabel("Value");
valuelbl.setHorizontalAlignment(JLabel.CENTER);
valuelbl.setFont(new Font("", 1, 20));
add("North", valuelbl);
JPanel txtpnl = new JPanel();
valuetxt = new JTextField(10);
valuetxt.setHorizontalAlignment(JTextField.CENTER);
txtpnl.add(valuetxt);
add("Center", txtpnl);
setVisible(true);
pack();
}
public JTextField getValuetxt() {
return valuetxt;
}
public void setValuetxt(JTextField valuetxt) {
this.valuetxt = valuetxt;
}
}
class Alarm extends javax.swing.JFrame implements WaterLevelObserver {
public void update(int waterLevel) {
}
private JButton onbtn;
private JButton offbtn;
private JLabel alarmlbl;
Alarm() {
setSize(300, 300);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
alarmlbl = new JLabel("Alarm");
alarmlbl.setHorizontalAlignment(JLabel.CENTER);
alarmlbl.setFont(new Font("", 1, 20));
add("North", alarmlbl);
JPanel center = new JPanel(new FlowLayout(FlowLayout.CENTER));
onbtn = new JButton("ON");
center.add(onbtn);
offbtn = new JButton("OFF");
center.add(offbtn);
add("Center", center);
pack();
setVisible(true);
}
public JButton getOnbtn() {
return onbtn;
}
public void setOnbtn(JButton onbtn) {
this.onbtn = onbtn;
}
public JButton getOffbtn() {
return offbtn;
}
public void setOffbtn(JButton offbtn) {
this.offbtn = offbtn;
}
public JLabel getAlarmlbl() {
return alarmlbl;
}
public void setAlarmlbl(JLabel alarmlbl) {
this.alarmlbl = alarmlbl;
}
}
class ControlRoom {
private final ArrayList <WaterLevelObserver> observerList = new ArrayList<> ();
private int waterLevel;
public void addWaterLevelObserver(WaterLevelObserver observer) {
observerList.add(observer);
}
public void notifyWaterLevelObservers() {
observerList.forEach((observer) -> {
observer.update(waterLevel);
});
}
public void setWaterLevel(int waterLevel) {
if (this.waterLevel! = waterLevel) {
this.waterLevel = waterLevel;
notifyWaterLevelObservers();
}
}
}
public class Demo {
public static void main(String args[]) {
ControlRoom controlroom = new ControlRoom();
controlroom.addWaterLevelObserver(new watertank());
controlroom.addWaterLevelObserver(new Alarm());
controlroom.addWaterLevelObserver(new Splitter());
}
}
,Value
,Alarm
的接口。但是也有重复的Water_Tank
和Value
接口。