根据不同的起始角度和跨越角度在绘图面板上绘制圆弧,我的程序如下:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;public class DrawDemo extends JFrame implements ActionListener{
DrawPanel draw=new DrawPanel();
Container container;
JPanel jp=new JPanel();
JLabel lb1=new JLabel("起始角");
JLabel lb2=new JLabel("跨度角");
JTextField tf1=new JTextField();
JTextField tf2=new JTextField();
GridLayout la=new GridLayout(2,1);
GridBagLayout layout=new GridBagLayout();
GridBagConstraints constraints=new GridBagConstraints();
DrawDemo(){
super("绘制圆弧");
setSize(300,600);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
container=getContentPane();
container.setLayout(la);
jp.setLayout(layout);
AddComponent(jp,layout,constraints,lb1,0,0,1,1,20,20);
constraints.fill=GridBagConstraints.HORIZONTAL;
AddComponent(jp,layout,constraints,tf1,1,0,1,1,20,20);
AddComponent(jp,layout,constraints,lb2,0,1,1,1,20,20);
constraints.fill=GridBagConstraints.HORIZONTAL;
AddComponent(jp,layout,constraints,tf2,1,1,1,1,20,20);
tf2.addActionListener(this);
container.add(jp);
container.add(draw);
}
public static void main(String[] args){
DrawDemo frame=new DrawDemo();
frame.show();
}
public void actionPerformed(ActionEvent e){
if(e.getSource() instanceof JTextField){
draw.start=Integer.parseInt(tf1.getText());
draw.sweep=Integer.parseInt(tf2.getText());
draw.repaint();    //???????
}
}
public void AddComponent(JPanel panel,GridBagLayout layout,GridBagConstraints a,Component com,int x,int y,int numx,int numy,int wx,int wy){
a.gridx=x;
a.gridy=y;
a.gridwidth=numx;
a.gridheight=numy;
a.weightx=wx;
a.weighty=wy;
layout.setConstraints(com, a);
panel.add(com);
}
}
class DrawPanel extends JPanel{
int start,sweep;
public void paint(Graphics g){
g.drawArc(getSize().width/2-100, getSize().height/2-100, 200, 200, start, sweep);
}
}
在问号出调用repaint()后重新绘图,但还是保留上次绘图留下的图形,不知道改怎么去掉前一次的绘图,希望大家可以帮我解决