观看张老师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);
}
}