[IT科技] 几个Applet实例发表于 @ 2009-6-8 18:00:26
1.编写一个Applet,在途中加入标签“旋转角度”和文本框,安排两个按钮“顺时针旋转”和“逆时针旋转”,在文本框中填写旋转角度,通过按钮实现旋转.
code=Java]import java.applet.*; import java.awt.*; import java.awt.event.*; import java.awt.geom.*; public class g2DRotate2 extends Applet implements ActionListener { Label label; TextField angle; Button b1, b2; int flag = 1; public void init() { setLayout(null); label = new Label("旋转角度:"); label.setBounds(250, 100, 65, 20); angle = new TextField("0.0", 10); angle.setBounds(330, 100, 65, 20); b1 = new Button("顺时针旋转"); b2 = new Button("逆时针旋转"); b1.setBounds(250, 130, 65, 20); b2.setBounds(330, 130, 65, 20); b1.addActionListener(this); b2.addActionListener(this); add(label); add(angle); add(b1); add(b2); setVisible(true); } public void paint(Graphics g) { int x = 130, y = 100; int i = 0; Graphics2D g2 = (Graphics2D) g; g.setColor(Color.blue); g2.draw(new Ellipse2D.Double(x, y, 20, 90)); g.setColor(Color.black); g.drawRect(x, y, 20, 90); g2.translate(150, 100);// 平移到(150,100),作为下面旋转的起点 if (flag == 1) g2.rotate(Double.parseDouble(angle.getText()));// 将角度转换成弧度 else g2.rotate(-Double.parseDouble(angle.getText())); g.setColor(Color.blue); g2.draw(new Ellipse2D.Double(-20, 0, 20, 90)); g.setColor(Color.black); g.drawRect(-20, 0, 20, 90); } public void actionPerformed(ActionEvent e) { if (e.getSource() == b1) { flag = 1; repaint(); } else { flag = -1; repaint(); } } }[/code] 2.编写一个Applet,通过文本框接收放大、缩小倍数,用按钮实现缩放变换。 import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
public class g2DScale2 extends Applet implements ActionListener {
Button bt1;
TextField tscaleX, tscaleY;
public void init() {
setLayout(null);
scalePanel spanel = new scalePanel();
spanel.setBounds(30, 200, 100, 50);
add(spanel);
bt1 = new Button("缩放变换");
bt1.setBounds(30, 260, 60, 20);
add(bt1);
bt1.addActionListener(this);
setVisible(true);
}
public void paint(Graphics g) {
int i = 0;
Graphics2D g2 = (Graphics2D) g;
g.setColor(Color.pink);
g.setColor(Color.blue);
g2.draw(new Rectangle2D.Double(20, 20, 50, 50));
g2.scale(Double.parseDouble(tscaleX.getText()), Double.parseDouble(tscaleY.getText()));
g2.draw(new Rectangle2D.Double(20, 20, 50, 50));
g.drawString("scale(" + tscaleX.getText() + "," + tscaleY.getText() + ")", 5, 95);
}
public void actionPerformed(ActionEvent arg0) {
repaint();
}
class scalePanel extends Panel {
Label lscaleX;
Label lscaleY;
scalePanel() {
setLayout(new GridLayout(2, 2));
tscaleX = new TextField("0.0", 3);
tscaleY = new TextField("0.0", 3);
lscaleX = new Label("X方向");
lscaleY = new Label("Y方向");
add(tscaleX);
add(tscaleY);
add(lscaleX);
add(lscaleY);
}
}
}关联内容 |