总结:在运行过程中,自己不是很认真,没有检查自己写的代码,结果是无论你怎么运行,双击
frame都没用,因为系统根本就没有调用paint()方法绘图。所以很重要的是实现这个方法
package com.a.b; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Paint; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.Random; ///练习监听的 import javax.swing.*;// //实现鼠标双击时画圆,运用画图 class Shape extends JFrame { //设置图形的坐标 int x,y; public Shape(){ JLabel jl=new JLabel("你是我的信仰"); jl.setForeground(Color.yellow); JLabel jl2=new JLabel("你是冬天里的太阳"); jl2.setForeground(Color.red); JPanel jp=new JPanel(); //看到冒这些字体什么都没显示在fraem jp.add(jl2); jp.add(jl); jp.setBackground(Color.green);//设置frame的背景色 this.add(jp); this.setBounds(100, 200, 500, 500); this.setDefaultCloseOperation(3); ini(); this.setVisible(true); } Random r=new Random(); public void paint(Graphics g) {//////////我终于明白了,这个画图的方法不是普通的方法,是自带的,小写的才可以被自动调用 g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255)));//否则是根本画不出来图形 //画圆。长方形,椭圆。直线。实心圆 g.fillOval(x, y, 44, 44);//实心圆 g.drawOval(x, y-32, 32, 32);//空心圆 //g.drawRect( x, y-22, 55,55); g.drawLine(x, y, 44, 44);//这是一条直线 g.drawString("hello world!!!", 300, 300); } public void ini(){ this.setBackground(Color.yellow);// this.addMouseListener(new MouseListener (){ //这里使用匿名的内部类来实现对frame的监听动作 @Override public void mouseClicked(MouseEvent e) { if(e.getClickCount()>=2){ x=e.getX(); y=e.getY(); repaint(); } } @Override public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub }}); } //开始画圈 } public class Tuxing { public static void main(String[] args) { new Shape().ini(); } }