arcapplet.java

来自「java的书上例子」· Java 代码 · 共 99 行

JAVA
99
字号
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/** 该JApplet小应用程序根据给定的参数画弧或填充弧 
  * 作者:尉哲明
  * 日期:2001年5月 */

/** 定义面板类在其上画弧 */
class ArcPanel extends JPanel
{
	int startAngle=0;
	int endAngle=45;
	boolean filled=false;

	/** 面板组件类的paintComponent()方法 */	
	public void paintComponent(Graphics g)
	{
		super.paintComponent(g);
		Rectangle r=getBounds();
		int hlines=r.height/10;
		int vlines=r.width/10;
		
		g.setColor(Color.pink);
		for(int i=1;i<=hlines;i++)
			g.drawLine(0,i*10,r.width,i*10);
		for(int i=1;i<=vlines;i++)
		    g.drawLine(i*10,0,i*10,r.height);
		
		g.setColor(Color.red);
		if (filled)	
			g.fillArc(0,0,r.width-1,r.height-1,startAngle,endAngle);
		else
			g.drawArc(0,0,r.width-1,r.height-1,startAngle,endAngle);
		
		g.setColor(Color.black);
		g.drawLine(0,r.height/2,r.width,r.height/2);
		g.drawLine(r.width/2,0,r.width/2,r.height);
		g.drawLine(0,0,r.width,r.height);
		g.drawLine(r.width,0,0,r.height);
		int sx=10;
		int sy=r.height-28;
		g.drawString("S="+startAngle,sx,sy);
		g.drawString("E="+endAngle,sx,sy+14);
	}// paintComponent()方法结束

	/** 改变参数后重新画弧 */	
	public void redraw(boolean filled,int start,int end)
	{
		this.filled=filled;
		this.startAngle=start;
		this.endAngle=end;
		repaint();
	}// redraw()方法结束
} //ArcPanel类结束

/** 控制面板类用于设置或改变参数 */
class ArcControls extends JPanel implements ActionListener
{
	TextField s;
	TextField e;
	ArcPanel panel;

	/** 控制面板类之构造方法,参数为画弧面板 */
	public ArcControls(ArcPanel panel)
	{
		Button b=null;
		this.panel=panel;
		add(s=new TextField("0",4));
		add(e=new TextField("45",4));
		b=new Button("Fill");
		b.addActionListener(this);
		add(b);
		b=new Button("Draw");
		b.addActionListener(this);
		add(b);
	}// ArcControls()构造方法结束

	/** 响应按钮事件的处理方法 */	
	public void actionPerformed(ActionEvent ev){
		String label=ev.getActionCommand();	
		panel.redraw(label.equals("Fill"),Integer.parseInt(s.getText().trim()),Integer.parseInt(e.getText().trim()));
	}// actionPerformed()方法结束
} //ArcControls类定义结束

/** JApplet类的定义*/
public class ArcApplet extends JApplet
{

	/** init()方法,取得JApplet内容面板,并在其中加入画弧面板和控制面板 */
	public void init()
	{
		Container contentPane=getContentPane();
		ArcPanel p=new ArcPanel();
		contentPane.add("Center",p);
		contentPane.add("South",new ArcControls(p));
	}// init()方法结束
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?