В настоящее время я разрабатываю интерактивный пользовательский интерфейс, который показывает вам, включили ли вы компонент воды или освещения тепличной системы.
У меня довольно сложная задача изменить значки меток при нажатии кнопки из другого окна, которое передает значения своих флагов в класс потока, что, в свою очередь, приводит к изменению иконки
Контроллер -> ThreadLogic -> NewSim
вот несколько примеров тестовых кодов, которые я использовал в окне пользовательского интерфейса
я все еще новичок, поэтому я использую автоматически сгенерированные коды из eclipse
Кажется, есть некоторые проблемы с вставкой кода
это фрагмент кода теста, который я использую для изменения значений флага
ThreadLogic
while(!t.interrupted()){
sim = new NewSim();
try {
sim.setLightStatus(1);
System.out.println("flag is 1");
t.sleep(5000);
sim.setLightStatus(0);
System.out.println("flag is 0");
t.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
NewSim
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import org.dyno.visual.swing.layouts.Constraints;
import org.dyno.visual.swing.layouts.GroupLayout;
import org.dyno.visual.swing.layouts.Leading;
//VS4E -- DO NOT REMOVE THIS LINE!
public class NewSim extends JFrame {
private static final long serialVersionUID = 1L;
protected JLabel water;
protected JLabel light;
Icon waterIcon = null;
Icon lightIcon = null;
private int lightFlag = 0;
private JPanel iconPane;
private static final String PREFERRED_LOOK_AND_FEEL = "javax.swing.plaf.metal.MetalLookAndFeel";
public NewSim() {
initComponents();
}
private void initComponents() {
setLayout(new GroupLayout());
add(getIconPane(), new Constraints(new Leading(4, 313, 10, 10), new Leading(4, 232, 10, 10)));
setSize(320, 240);
}
private JPanel getIconPane() {
if (iconPane == null) {
iconPane = new JPanel();
iconPane.setLayout(new GroupLayout());
iconPane.add(getWaterLabel(), new Constraints(new Leading(163, 10, 10), new Leading(79, 12, 12)));
iconPane.add(getLightLabel(), new Constraints(new Leading(115, 12, 12), new Leading(79, 12, 12)));
}
return iconPane;
}
private JLabel getLightLabel() {
if (light == null) {
light = new JLabel();
System.out.println(this.lightFlag);
setLightStatus(0);
}
return light;
}
private JLabel getWaterLabel() {
if (water == null) {
water = new JLabel();
water.setIcon(new ImageIcon(getClass().getResource("/images/wateroff.png")));
}
return water;
}
public void setLightStatus(int lightFlag2) {
// TODO Auto-generated method stub
this.lightFlag = lightFlag2;
switch(this.lightFlag){
case 0: System.out.println("case 0");
light.setIcon(new ImageIcon(getClass().getResource("/images/lightoff.png")));
light.revalidate();
break;
case 1: System.out.println("case 0");
light.setIcon(new ImageIcon(getClass().getResource("/images/lighton.png")));
light.revalidate();
break;
}
}
}