且不说图形是什么?我能会出来,就是自定义了Paint()后,每次打开网页,就自动调用Paint(),覆盖了init()中的标签,文本等,怎样才能使Gui始终显示又在按下BUtton后会自动绘图呢?(快交作业了,跪求指导 )!!!
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;import javax.swing.JApplet;
public class AppletTwo extends JApplet implements ActionListener
{
int x=0,y=0,width=0,height=0,startAngle=0,atcAngle=0;
JLabel l1,l2,l3,l4,l5,l6;
JTextField t1,t2,t3,t4,t5,t6;
JButton b;
public void init()
{
l1=new JLabel("x");
l1.setBounds(0,0,50,50);
l2=new JLabel("y");
l2.setBounds(0,50,50,50);
l3=new JLabel("width");
l3.setBounds(150,0,100,50);
l4=new JLabel("height");
l4.setBounds(150,50,100,50);
l5=new JLabel("startAngle");
l5.setBounds(350,0,150,50);
l6=new JLabel("atcAngle");
l6.setBounds(350,50,150,50);
t1=new JTextField();
t1.setBounds(50,0,100,50);
t2=new JTextField();
t2.setBounds(50,50,100,50);
t3=new JTextField();
t3.setBounds(250,0,100,50);
t4=new JTextField();
t4.setBounds(250,50,100,50);
t5=new JTextField();
t5.setBounds(500,0,100,50);
t6=new JTextField();
t6.setBounds(500,50,100,50);
b=new JButton("绘制");
b.setBounds(620,50,180,50);
b.setActionCommand("play");
b.addActionListener(this);
getContentPane().add(l1);
getContentPane().add(l2);
getContentPane().add(l3);
getContentPane().add(l4);
getContentPane().add(l5);
getContentPane().add(l6);
getContentPane().add(t1);
getContentPane().add(t2);
getContentPane().add(t3);
getContentPane().add(t4);
getContentPane().add(t5);
getContentPane().add(t6);
getContentPane().add(b);
setVisible(true);
setLayout(null);
}
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals("play"))
{
x=Integer.parseInt(t1.getText());
y=Integer.parseInt(t2.getText());
width=Integer.parseInt(t3.getText());
height=Integer.parseInt(t4.getText());
startAngle=Integer.parseInt(t5.getText());
atcAngle=Integer.parseInt(t6.getText());
repaint();
}
}
public void paint(Graphics g)
{
if(isOpaque)
{
g.drawRect(x,y,width-1,height-1);
g.drawLine(x,y,x+width,y+height);
g.drawLine(x+width,y,x,y+height);
g.drawLine((int)(x+width/2),y,(int)(x+width/2),y+height);
g.drawLine(x,(int)(y+height/2),x+width,(int)(y+height/2));
g.drawOval(x,y,width,height);
g.setColor(Color.black);
g.fillArc(x,y,width,height,startAngle,atcAngle);
}
}
}
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;import javax.swing.JApplet;
public class AppletTwo extends JApplet implements ActionListener
{
int x=0,y=0,width=0,height=0,startAngle=0,atcAngle=0;
JLabel l1,l2,l3,l4,l5,l6;
JTextField t1,t2,t3,t4,t5,t6;
JButton b;
public void init()
{
l1=new JLabel("x");
l1.setBounds(0,0,50,50);
l2=new JLabel("y");
l2.setBounds(0,50,50,50);
l3=new JLabel("width");
l3.setBounds(150,0,100,50);
l4=new JLabel("height");
l4.setBounds(150,50,100,50);
l5=new JLabel("startAngle");
l5.setBounds(350,0,150,50);
l6=new JLabel("atcAngle");
l6.setBounds(350,50,150,50);
t1=new JTextField();
t1.setBounds(50,0,100,50);
t2=new JTextField();
t2.setBounds(50,50,100,50);
t3=new JTextField();
t3.setBounds(250,0,100,50);
t4=new JTextField();
t4.setBounds(250,50,100,50);
t5=new JTextField();
t5.setBounds(500,0,100,50);
t6=new JTextField();
t6.setBounds(500,50,100,50);
b=new JButton("绘制");
b.setBounds(620,50,180,50);
b.setActionCommand("play");
b.addActionListener(this);
getContentPane().add(l1);
getContentPane().add(l2);
getContentPane().add(l3);
getContentPane().add(l4);
getContentPane().add(l5);
getContentPane().add(l6);
getContentPane().add(t1);
getContentPane().add(t2);
getContentPane().add(t3);
getContentPane().add(t4);
getContentPane().add(t5);
getContentPane().add(t6);
getContentPane().add(b);
setVisible(true);
setLayout(null);
}
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals("play"))
{
x=Integer.parseInt(t1.getText());
y=Integer.parseInt(t2.getText());
width=Integer.parseInt(t3.getText());
height=Integer.parseInt(t4.getText());
startAngle=Integer.parseInt(t5.getText());
atcAngle=Integer.parseInt(t6.getText());
repaint();
}
}
public void paint(Graphics g)
{
if(isOpaque)
{
g.drawRect(x,y,width-1,height-1);
g.drawLine(x,y,x+width,y+height);
g.drawLine(x+width,y,x,y+height);
g.drawLine((int)(x+width/2),y,(int)(x+width/2),y+height);
g.drawLine(x,(int)(y+height/2),x+width,(int)(y+height/2));
g.drawOval(x,y,width,height);
g.setColor(Color.black);
g.fillArc(x,y,width,height,startAngle,atcAngle);
}
}
}
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;import javax.swing.JApplet;
public class AppletTwo extends JApplet implements ActionListener
{
int x=0,y=0,width=0,height=0,startAngle=0,atcAngle=0;
JLabel l1,l2,l3,l4,l5,l6;
JTextField t1,t2,t3,t4,t5,t6;
JButton b;
public void init()
{
l1=new JLabel("x");
l1.setBounds(0,0,50,50);
l2=new JLabel("y");
l2.setBounds(0,50,50,50);
l3=new JLabel("width");
l3.setBounds(150,0,100,50);
l4=new JLabel("height");
l4.setBounds(150,50,100,50);
l5=new JLabel("startAngle");
l5.setBounds(350,0,150,50);
l6=new JLabel("atcAngle");
l6.setBounds(350,50,150,50);
t1=new JTextField();
t1.setBounds(50,0,100,50);
t2=new JTextField();
t2.setBounds(50,50,100,50);
t3=new JTextField();
t3.setBounds(250,0,100,50);
t4=new JTextField();
t4.setBounds(250,50,100,50);
t5=new JTextField();
t5.setBounds(500,0,100,50);
t6=new JTextField();
t6.setBounds(500,50,100,50);
b=new JButton("绘制");
b.setBounds(620,50,180,50);
b.setActionCommand("play");
b.addActionListener(this);
getContentPane().add(l1);
getContentPane().add(l2);
getContentPane().add(l3);
getContentPane().add(l4);
getContentPane().add(l5);
getContentPane().add(l6);
getContentPane().add(t1);
getContentPane().add(t2);
getContentPane().add(t3);
getContentPane().add(t4);
getContentPane().add(t5);
getContentPane().add(t6);
getContentPane().add(b);
setVisible(true);
setLayout(null);
}
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals("play"))
{
x=Integer.parseInt(t1.getText());
y=Integer.parseInt(t2.getText());
width=Integer.parseInt(t3.getText());
height=Integer.parseInt(t4.getText());
startAngle=Integer.parseInt(t5.getText());
atcAngle=Integer.parseInt(t6.getText());
repaint();
}
}
public void paint(Graphics g)
{
g.drawRect(x,y,width-1,height-1);
g.drawLine(x,y,x+width,y+height);
g.drawLine(x+width,y,x,y+height);
g.drawLine((int)(x+width/2),y,(int)(x+width/2),y+height);
g.drawLine(x,(int)(y+height/2),x+width,(int)(y+height/2));
g.drawOval(x,y,width,height);
g.setColor(Color.black);
g.fillArc(x,y,width,height,startAngle,atcAngle);
}
}
不过,在不输入数字的情况下按“绘制”按钮,有个异常。Integer.parseInt异常,从防错角度看,还是应该处理下的,确保所有数字都有输入情况下,才进行数字解析。有种做法可以尝试下,就是在paint中首先调用默认处理绘制控件:public void paint(Graphics g)
{
super.paint(g); //先进行默认绘制
...
}