java如何在事件监听中显示 直线?比如说按一个按钮就自动显示出来一个图形……

如题所述

例子。画一条直线和多个椭圆。
import java.awt.*;
import java.awt.Graphics2D;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;

public class TestFrame2 extends JFrame implements ActionListener{

private JButton jb;
public TestFrame2() {
setName("画直线");
setBounds(200,200,300,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jb = new JButton("按钮");
jb.addActionListener(this);
add(jb,BorderLayout.SOUTH);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
//获得窗口的pane再获得该pane的画笔
Graphics2D g = (Graphics2D) getContentPane().getGraphics();
//画直线
g.drawLine(10, 10, 40, 40);
g.setColor(Color.blue);
Ellipse2D.Float e1 = new Ellipse2D.Float(110f, 30f, 50, 200);//椭圆
paintEllipse2(e1,g);
}
//把一个单精度的圆根据其圆心旋转画地按一定间隔的角度画一个图案
public void paintEllipse2(Ellipse2D.Float e, Graphics2D g2) {
double x = e.width/2 + e.x;
double y = e.height/2 + e.y;
for (double i = 0; i < 360f; i+=10f) {
AffineTransform at = AffineTransform.getRotateInstance((Math.PI/180)*i,x,y);
g2.draw(at.createTransformedShape(e));
}
}
public static void main(String[] args) {
TestFrame2 tf = new TestFrame2();
}
}追问

(Graphics2D) getContentPane()是神么意思呢??

追答

getContentPane()就是获得该窗口的Panel实例(JFrame窗口本身就有一个panel)。再由panel的getGraphics()方法获得画笔。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-02-27
新建一个线程 在里面while(tag == 0){} + 画直线
按钮事件里让tag = 1就行了 跳出while就可以了本回答被提问者和网友采纳
第2个回答  2012-02-18
百度啊。。。

java如何在事件监听中显示 直线?比如说按一个按钮就自动显示出来一个图...
import java.awt.geom.*;import javax.swing.*;public class TestFrame2 extends JFrame implements ActionListener{ private JButton jb;public TestFrame2() { setName("画直线");setBounds(200,200,300,300);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jb = new JButton("按钮");jb.addA...

java中通过一个按钮在jPanel上画一条直线,为什么按两次按钮直线才出现...
第一次执行你没有调用绘制方法,而第二次执行时整个Panel会自动重绘,所以出来第一根线,你的第二根线应该是没有的

设计一个文本框 用户在文本框中输入什么 窗体标题就同步显示什么...
1、首先需要选择创建窗体设计按钮,如下图所示。2、创建好一个新窗体后,右键单击窗体左上角选择属性命令,如下图所示。3、接下来需要在右侧的属性表标题处输入测试窗体,如下图所示。4、接下来需要设置好后关闭窗体,如下图所示。5、接下来需要保存窗体设计,如下图所示。6、最后需要修改窗体名称即可...

用eclipse最新版 java1.7 写一个小的测试程序,在一个窗口画一个椭圆,窗...
g.clearRect(p1.x, p1.y, p1.boarder, p1.boarder); break; case 3:\/\/ 画直线 Line2D line2 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y); g2d.draw(line2); break; case 4:\/\/ 画圆 Ellipse2D ellipse = new Ellipse2D.Double(p1.x, p1.y, Math.abs(p2.x - p1.x),...

VFP中如何用列表框显示一个二维数组的各个元素的值?
1.)你的这个LIST1的属性在设计时设置好的话使得当表单初始化时它就去找a这个数据源了,而你的a在点按钮之前还没产生,所以表单一出来先提示a不是一个数组。2.)dimension定义的是私有变量,你在按钮里定义的数组,在执行到THISFORM.LIST1.REQUERY之前数组a就消失了,所以LIST1里只剩下一杠杠的却没...

用电脑怎么使用软件怎么用电脑使用手机上的软件
1.安装手机助手类软件。弧开它并连接手机。 2.在手机助手里面 找到---手机管理---系统应用。 3.找到后,勾选那些想要卸载的系统应用,注意一定不要卸载掉了系统稳定相关的应用,比如桌面应用,信息应用这类的。 4.勾选好后在助手软件的对话窗口上找到卸载这类的按钮就可以开始卸载了。 5.或者勾选一个之后...

想买一个三星的机子..怎么看是不是行货或翻新呢?谢啦.最好多点方案_百 ...
6,电子邮件密码保护,在电话本中选择一个邮件地址,选项,发送电子邮件,输入密码进入编辑邮件,编辑好了后发送,在地址栏显示的是密码而不是地址 7,MP3做铃声,进入录象,选项,拒绝一个来电,C键返回录象预览,i键开始录象,自动重启 8,菜单3.1.1(JAVA),选项,进入2\/3\/4,最下面一行有文字,这时候有来电,拒绝掉,最下面...

相似回答