import javax.swing.JFrame;
class Game_Frame{
void game_Frame(){
this.setTitle("Game_Frame"); //设置标题
this.setVisible(true); //设置窗口为可见
this.setSize(490,490); //设置大小
this.setLocation(400,400); //设置位置
}
public static void main(String[] args)
{
Game_Frame f = new Game_Frame();
f.game_Frame();
}
}
发现关闭窗口程序并未结束
this.addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0); //退出程序
}
}
);
作用
重写抽象类WindowAdapter中windowClosing方法,关闭窗口退出程序。
Java中abstract修饰的类
抽象类不允许创建对象,有时不允许特定类创建对象时,可以使用abstract修饰此类。
抽象方法一定存在抽象类中,抽象方法和抽象类必须被修饰符abstract修饰
抽象类中不一定要包含abstrace方法。也就是了,抽象中可以没有abstract方法。
paint
public void paint(Graphics g){ //g相当于一个画笔
g.setColor(Color.CYAN); //设置颜色
g.drawLine(0,0,490,490);
}
在弹出的窗口中画一条直线,颜色为cyan色,起始坐标(0,0),终点坐标(490,490)。
g.drawRect(100, 100, 50, 50);
在(100,100)位置画一个宽50,高50的矩形
g.drawOval(100,100,120,120);
画一个椭圆,高120,宽120,与前面不同的是,椭圆的位置是依据该圆的外切矩形确定的
g.drwaString("HelloWorld",200,200);
在坐标(200,200)处画一个字符串"HelloWorld"。
g.setFont(new Font("宋体", Font.BOLD, 50));
改变字体
public class paint(Graphics g)
{
Color c = g.getColor();
Font f = g.getFont();
// 存储传入的g的颜色和字体
g.setColor(Color,cyan);
g.drawLine(0,0,490,490);
g.drawRect(100,100,50,50);
g.drawOval(100,100,120,120);
g.setFont(new Font("宋体",Font.BOLD,50));
g.drawString("HelloWorld",200,200);
// 将g的颜色和字体改回传入时的状态
g.setColor(c);
g.setFont(f);
}
注意
g是一个被传过来的对象,其本身就有颜色,所以改变其颜色,字体等时前应该保存它原来的颜色、字体,用完后再改回去。
内部类
成员内部类(静态内部类,非静态内部类),匿名内部类,局部内部类
插入图片
1.JLabel:
对象可以显示文本、图像或同时显示二者
ImageIcon img = new ImageIcon("src//image//111.jpg"); //相对路径要从project开始写
JLabel jl = new JLabel(img);
this.add(jl); // 向窗体添加
因为插入图片背景颜色与窗口背景颜色不同
尝试修改窗口背景颜色,
void game_Frame(){
this.setTitle("Game_Frame");
this.setBackground(Color.white); /// 修改颜色为白色
this.setVisible(true);
this.setSize(490,490);
this.setLocation(400,400);
}
运行发现背景颜色未改变。
原因:JFrame当中会默认使用流式布局管理器(FlowLayout)将整个窗体进行覆盖操作,也就是说设置的颜色确实是存在的,只是被布局管理器给覆盖住了,所以无法看见。
解决
this.setTitle("Game_Frame");
// this.setBackground(Color.white); /// 修改颜色为白色
this.getContentPane().setBackground(Color.white);//直接修改布局管理器的颜色
this.setVisible(true);
this.setSize(490,490);
this.setLocation(400,400);
}
未完待续…