DrawLine画线颜色问题


 

观看张老师Java高级教程GUI部分遇到的疑问,现在已经解决了

问题描述在下边代码的头部注释信息中,没找到问题时真是难得不得了,找到问题后真是发现原来这么简单,还是粗心了

package mytest;

import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class DrawLine extends Frame
{
 /**画直线,鼠标点击处为起点,释放处为终点
  * 给出起点和终点坐标信息
  *
  * 都还正常,就是设置字体时没有效果,看张老师演示的字和线都同时变颜色了
  * 我这个字不变,线变色了,设置字体后也没有效果,和原来一样,没变粗斜体也没变大
  */

 public DrawLine(String string)
 {
  //调用父类的new Frame(String)构造方法
  super(string);
  //添加窗口监听器,相应关闭操作
  addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
    dispose();
    System.exit(0);
   }
  });
  //添加鼠标监听器
  addMouseListener(new MouseAdapter()
  {
   //记录起始点
   int x, y;
   public void mousePressed(MouseEvent e)
   { //鼠标按下记录起始点,给出提示
    x = e.getX();
    y = e.getY();
    getGraphics().drawString("起始点"+x+","+y, x, y);
   }
   public void mouseReleased(MouseEvent e)
   {
    //多次调用getGraphics返回的不是同一个对象,所以记录一下
    Graphics graphics = getGraphics();
    //鼠标释放记录坐标值
    int xx = e.getX();
    int yy = e.getY();
    //如果起始点相同就不用画线了
    if (x==xx && y==yy)
     return;
    //设置颜色
    graphics.setColor(Color.RED);
    //设置字体  斜体加粗
    graphics.setFont(new Font(null, Font.ITALIC|Font.BOLD, 30));
    //画线,给出终点坐标提示
    graphics.drawLine(x, y, xx, yy);
    getGraphics().drawString("终止点"+xx+","+yy, xx, yy);
   }
  });
 }
 
 public static void main(String[] args)
 {
  // 继承了Frame自己就是一个窗体类了
  DrawLine frame = new DrawLine("画线");
  frame.setSize(500, 500);
  frame.setVisible(true);
 }

}

你可能感兴趣的:(学习疑问)