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 + -
显示快捷键?