📄 ledpanel.java
字号:
/*
* Created on 2005-6-5
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package bomb;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.graphics.PaletteData;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.SWT;
import java.util.Observer;
import java.util.Observable;
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public abstract class LEDPanel extends Canvas implements Observer{
private int patterns[] = null;
private Image img = null;
private Color foreGround = null;
private Color backGround = null;
private DigitalModel digitalModel = null;
private int len = 0;
public LEDPanel(Composite parent,int[] patterns){
super(parent,SWT.BORDER);
foreGround = this.getDisplay().getSystemColor(SWT.COLOR_RED);
backGround = this.getDisplay().getSystemColor(SWT.COLOR_BLACK);
RGB rgb[] = new RGB[]{backGround.getRGB(),foreGround.getRGB()};
digitalModel = new DigitalModel(new PaletteData(rgb));
addPaintListener(new PaintListener(){
public void paintControl(PaintEvent event){
paint(event);
}
});
addDisposeListener(new DisposeListener(){
public void widgetDisposed(DisposeEvent event){
if (img != null){
img.dispose();
}
}
});
this.len = patterns.length;
setPatterns(patterns);
}
private void paint(PaintEvent event){
Rectangle rect = getClientArea();
ImageData imageData = digitalModel.getModel(patterns);
img = new Image(getDisplay(),imageData);
event.gc.drawImage(img,imageData.x,imageData.y,imageData.width,imageData.height,
rect.x,rect.y,rect.width,rect.height);
}
public Point computeSize(int wHint,int hHint,boolean changed){
return new Point(15 * patterns.length ,28);
}
public void setPatterns(int[] patterns){
this.patterns = patterns;
this.redraw();
}
public void setPattern(int pattern){
int index[] = new int[3];
int div =100;
if (pattern > -999 && pattern <999){
int i = 0;
if (pattern < 0){
index[i++] = 10;
pattern = Math.abs(pattern);
div/=10;
}
int k = 3;
for (;i<k;i++){
index[i] = pattern/div;
pattern =pattern%div;
div = div/10;
}
}
this.setPatterns(index);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -