📄 led.java
字号:
//LEDimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class Led extends JPanel{ Image leds[] = new Image[4]; public static final boolean OFF = false; public static final boolean ON = true; public static final boolean BLUE = false; public static final boolean YELLOW = true; private static final int howManyLedsAre=18; public static int ledWidth; //Width of the led image public static int ledHeight; //Height of the led image private int thisLedNumber; public static boolean ledsOnPortViewerArrayState[] = new boolean[howManyLedsAre]; public static boolean ledsOnPortViewerArrayColor[] = new boolean[howManyLedsAre]; public static boolean ledsOnPortViewerArrayIsActive[] = new boolean[howManyLedsAre]; private UpdateLed updateLed = new UpdateLed(); private static final int ledUpdateDelay = 100; public Led(int coordinateXOnParent,int coordinateYOnParent,int thisLedNumber,String toolTip){ InitLed(); setThisLedNumber(thisLedNumber); setLedLocation(coordinateXOnParent,coordinateYOnParent); setToolTipText(toolTip); } private void InitLed(){ for (int i=0;i<=3;i++){ leds[i] = new ImageIcon(getClass().getResource("Leds/"+i+".gif")).getImage(); } ledWidth = leds[0].getWidth(this); ledHeight = leds[0].getHeight(this); setPreferredSize(new Dimension(ledWidth,ledHeight)); setOpaque(false); setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); addMouseListener(new MouseFunctions()); updateLed.start(); } private class MouseFunctions extends MouseAdapter{ public void mousePressed(MouseEvent e){ if (e.getButton()==MouseEvent.BUTTON1){ if (ledsOnPortViewerArrayIsActive[thisLedNumber]==true) ledsOnPortViewerArrayState[thisLedNumber]=(!ledsOnPortViewerArrayState[thisLedNumber]); } } } public void setThisLedNumber(int thisLedNumber){ this.thisLedNumber=thisLedNumber; } public void setLedLocation(int coordinateXOnParent,int coordinateYOnParent){ setBounds(coordinateXOnParent,coordinateYOnParent,ledWidth,ledHeight); } public void paintComponent(Graphics g){ super.paintComponent(g); drawLed(g); } private void drawLed(Graphics g){ g.drawImage(leds[((ledsOnPortViewerArrayColor[thisLedNumber]==YELLOW)?0:2)+((ledsOnPortViewerArrayState[thisLedNumber]==ON)?1:0)],0,0,this); } private class UpdateLed extends Thread{ boolean ledTemp; public void run(){ ledTemp = ledsOnPortViewerArrayState[thisLedNumber]; while(true){ if (ledTemp != ledsOnPortViewerArrayState[thisLedNumber]){ if (getParent()!=null) getParent().repaint(); repaint(); ledTemp = ledsOnPortViewerArrayState[thisLedNumber]; } if (thisLedNumber==0){ if (ledsOnPortViewerArrayState[0]==false) dataOutColors(); if (ledsOnPortViewerArrayState[0]==true) dataInColors(); if (getParent()!=null) getParent().repaint(); repaint(); } try{Thread.sleep(ledUpdateDelay);}catch(InterruptedException e){} } } } private void dataInColors(){ ledsOnPortViewerArrayIsActive[0] = ledsOnPortViewerArrayColor[0] = true; ledsOnPortViewerArrayIsActive[1] = ledsOnPortViewerArrayColor[1] = true; ledsOnPortViewerArrayIsActive[2] = ledsOnPortViewerArrayColor[2] = false; ledsOnPortViewerArrayIsActive[3] = ledsOnPortViewerArrayColor[3] = false; ledsOnPortViewerArrayIsActive[4] = ledsOnPortViewerArrayColor[4] = false; ledsOnPortViewerArrayIsActive[5] = ledsOnPortViewerArrayColor[5] = false; ledsOnPortViewerArrayIsActive[6] = ledsOnPortViewerArrayColor[6] = false; ledsOnPortViewerArrayIsActive[7] = ledsOnPortViewerArrayColor[7] = false; ledsOnPortViewerArrayIsActive[8] = ledsOnPortViewerArrayColor[8] = false; ledsOnPortViewerArrayIsActive[9] = ledsOnPortViewerArrayColor[9] = false; ledsOnPortViewerArrayIsActive[10] = ledsOnPortViewerArrayColor[10] = false; ledsOnPortViewerArrayIsActive[11] = ledsOnPortViewerArrayColor[11] = false; ledsOnPortViewerArrayIsActive[12] = ledsOnPortViewerArrayColor[12] = false; ledsOnPortViewerArrayIsActive[13] = ledsOnPortViewerArrayColor[13] = false; ledsOnPortViewerArrayIsActive[14] = ledsOnPortViewerArrayColor[14] = true; ledsOnPortViewerArrayIsActive[15] = ledsOnPortViewerArrayColor[15] = false; ledsOnPortViewerArrayIsActive[16] = ledsOnPortViewerArrayColor[16] = true; ledsOnPortViewerArrayIsActive[17] = ledsOnPortViewerArrayColor[17] = true; } private void dataOutColors(){ ledsOnPortViewerArrayIsActive[0] = ledsOnPortViewerArrayColor[0] = true; ledsOnPortViewerArrayIsActive[1] = ledsOnPortViewerArrayColor[1] = true; ledsOnPortViewerArrayIsActive[2] = ledsOnPortViewerArrayColor[2] = true; ledsOnPortViewerArrayIsActive[3] = ledsOnPortViewerArrayColor[3] = true; ledsOnPortViewerArrayIsActive[4] = ledsOnPortViewerArrayColor[4] = true; ledsOnPortViewerArrayIsActive[5] = ledsOnPortViewerArrayColor[5] = true; ledsOnPortViewerArrayIsActive[6] = ledsOnPortViewerArrayColor[6] = true; ledsOnPortViewerArrayIsActive[7] = ledsOnPortViewerArrayColor[7] = true; ledsOnPortViewerArrayIsActive[8] = ledsOnPortViewerArrayColor[8] = true; ledsOnPortViewerArrayIsActive[9] = ledsOnPortViewerArrayColor[9] = true; ledsOnPortViewerArrayIsActive[10] = ledsOnPortViewerArrayColor[10] = false; ledsOnPortViewerArrayIsActive[11] = ledsOnPortViewerArrayColor[11] = false; ledsOnPortViewerArrayIsActive[12] = ledsOnPortViewerArrayColor[12] = false; ledsOnPortViewerArrayIsActive[13] = ledsOnPortViewerArrayColor[13] = false; ledsOnPortViewerArrayIsActive[14] = ledsOnPortViewerArrayColor[14] = true; ledsOnPortViewerArrayIsActive[15] = ledsOnPortViewerArrayColor[15] = false; ledsOnPortViewerArrayIsActive[16] = ledsOnPortViewerArrayColor[16] = true; ledsOnPortViewerArrayIsActive[17] = ledsOnPortViewerArrayColor[17] = true; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -