public class kkk { public static void main(String[] args) { SimpleFrame frame = new SimpleFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); } } class lcd extends JPanel { public lcd() { this.setSize(200,200); } public void paint( Graphics g) { g.setColor(Color.BLUE); g.drawLine(0,0,100,100); } } class SimpleFrame extends JFrame { public SimpleFrame() { lcd mylcd = new lcd(); this.getContentPane().add(mylcd); this.setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT); } public static final int DEFAULT_WIDTH = 300; public static final int DEFAULT_HEIGHT = 200; }
//下面是一个显示图片的例子,图片自己找,0到9的图片就可以了。import javax.swing.*; import java.awt.*;public class num extends JPanel{ private ImageIcon digit[]=new ImageIcon[10]; public num(){ for(int i=0;i<10;i++){ digit[i]=new ImageIcon("Images/num"+i+".GIF"); } setPreferredSize(new Dimension(200, 60)); }
public synchronized void paint(Graphics g){ super.paint(g); g.drawImage(digit[0].getImage(),0,0,25,50,this); g.drawImage(digit[1].getImage(),20,0,25,50,this); } }
我写了一个类,画七段数码的,但是不知怎样调用,而且关键我的坐标不会处理,因为老师要求,把计算器放大,显示数码的面板也跟着放大。我头都大了,就是不会啊,我实在不知怎么处理坐标,所以把头一个坐标设为(50,50)。 class SevenDigitalDemo { public int x=50; public int y=50; public void UpDemoPainting(Graphics g)//UpDemoPainting { Polygon p1=new Polygon(); p1.addPoint(x,y); p1.addPoint(x+20,y+20); p1.addPoint(x+80,y+20); p1.addPoint(x+100,y); g.drawPolygon(p1); g.setColor(Color.red); g.fillPolygon(p1);
比如在面板上画12345,每个数字都有坐标,以什么为衡量标准来画。是不是一1的坐标为常量,后面的数字用x+y等等之类的函数表达式来画?
{
public static void main(String[] args)
{
SimpleFrame frame = new SimpleFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
class lcd extends JPanel
{
public lcd()
{
this.setSize(200,200);
} public void paint( Graphics g)
{
g.setColor(Color.BLUE);
g.drawLine(0,0,100,100);
} }
class SimpleFrame extends JFrame
{
public SimpleFrame()
{
lcd mylcd = new lcd();
this.getContentPane().add(mylcd);
this.setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
} public static final int DEFAULT_WIDTH = 300;
public static final int DEFAULT_HEIGHT = 200;
}
import java.awt.*;public class num extends JPanel{
private ImageIcon digit[]=new ImageIcon[10];
public num(){
for(int i=0;i<10;i++){
digit[i]=new ImageIcon("Images/num"+i+".GIF");
}
setPreferredSize(new Dimension(200, 60));
}
public synchronized void paint(Graphics g){
super.paint(g);
g.drawImage(digit[0].getImage(),0,0,25,50,this);
g.drawImage(digit[1].getImage(),20,0,25,50,this);
}
}
class SevenDigitalDemo
{
public int x=50;
public int y=50;
public void UpDemoPainting(Graphics g)//UpDemoPainting
{
Polygon p1=new Polygon();
p1.addPoint(x,y);
p1.addPoint(x+20,y+20);
p1.addPoint(x+80,y+20);
p1.addPoint(x+100,y);
g.drawPolygon(p1);
g.setColor(Color.red);
g.fillPolygon(p1);
}
public void RightDemoPainting(Graphics g)//RightDemoPainting
{
Polygon p2=new Polygon();
p2.addPoint(x+83,y+23);
p2.addPoint(x+83,y+83);
p2.addPoint(x+96,y+96);
p2.addPoint(x+103,y+89);
p2.addPoint(x+103,y+3);
g.setColor(Color.red);
g.drawPolygon(p2);
g.fillPolygon(p2);
}
public void LeftDemoPainting(Graphics g)//LeftDemoPainting
{
Polygon p3=new Polygon();
p3.addPoint(x-3,y+3);
p3.addPoint(x-3,y+89);
p3.addPoint(x+4,y+96);
p3.addPoint(x+17,y+83);
p3.addPoint(x+17,y+23);
g.setColor(Color.red);
g.drawPolygon(p3);
g.fillPolygon(p3);
}
public void MidDemoPainting(Graphics g)//MidDemoPainting
{
Polygon p4=new Polygon();
p4.addPoint(x+20,y+86);
p4.addPoint(x+80,y+86);
p4.addPoint(x+92,y+98);
p4.addPoint(x+80,y+106);
p4.addPoint(x+20,y+106);
p4.addPoint(x+8,y+98);
g.drawPolygon(p4);
g.fillPolygon(p4);
}
public void LeftdownDemoPainting(Graphics g)//LeftdownDemoPainting
{
Polygon p5=new Polygon();
p5.addPoint(x+4,y+100);
p5.addPoint(x+17,y+109);
p5.addPoint(x+17,y+169);
p5.addPoint(x-3,y+189);
p5.addPoint(x-3,y+107);
g.drawPolygon(p5);
g.fillPolygon(p5);
}
public void RightdownDemoPainting(Graphics g)//RightdownDemoPainting
{
Polygon p6=new Polygon();
p6.addPoint(x+96,y+100);
p6.addPoint(x+103,y+107);
p6.addPoint(x+103,y+189);
p6.addPoint(x+83,y+169);
p6.addPoint(x+83,y+109);
g.drawPolygon(p6);
g.fillPolygon(p6);
}
public void DownDemoPainting(Graphics g)//DownDemoPainting
{
Polygon p7=new Polygon();
p7.addPoint(x+20,y+172);
p7.addPoint(x+80,y+172);
p7.addPoint(x+100,y+192);
p7.addPoint(x,y+192);
g.drawPolygon(p7);
g.fillPolygon(p7);
}
}
你的问题估计主要是不知道如何使显示变大吧!
程序运行的时候显示数码的对话框的大小必须根据Frame的大小决定(如何获得Frame的大小查帮助文档,上面写很清楚的)。
然后在计算出数字显示位置的一个比例值。也就是占变化后的对话框百分之多少了。
数字的大小用同样的方法可以求的。
你上面的算法全是固定值当然不行,改成相对值就可以了。算法你自己先写写!