JAVA_XXBJ(13)窗体和面板基础设置

图形用户界面(GUI)

GUI是指采用图形方式显示的计算机操作用户界面。大家可以看看电脑上的浏览器,帮里面文字全部去掉,可以将其看成一个长方形,右上角三个按钮,左上角一个图标,窗体就是这个,可以理解为一个框架,面板就是窗体上面的东西,如图:
在这里插入图片描述
图中蓝色部分是面板,其他部分是窗体,面板在窗体上面(面板下面是有窗体的)

窗体和面板

窗体和面板构成了这么一个图形界面,难么这么一个窗体和面板需要设置什么呢,注意下面的代码:

public class JFrame_test {

	public static void main(String[] args) {
		//1、创建一个窗体(JFrame)的对象。frame
		JFrame frame = new JFrame();
		//3、设置窗体的宽高为800*400px
		frame.setSize(800, 400);
		//4.1、设置坐标
		//frame.setLocation(200,200);
		//4.2、设置居中
		frame.setLocationRelativeTo(null);
		//5、设置默认关闭按钮功能
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//JFrame.EXIT_ON_CLOSE = 3
		//6、设置窗体的大小不可被更改
		frame.setResizable(false);
		//7、取消窗体边框
		//frame.setUndecorated(true);
		//8.1、设置窗体的背景颜色
		/*frame.setBackground(Color.BLACK);*/
		//8.2、创建一个面板对象 panel
		JPanel panel = new JPanel();
		//8.3、设置面板颜色
		//panel.setBackground(Color.BLACK);
		panel.setBackground(new Color(150,138,241));//自定义颜色(三原色)
		//8.4、将面板(panel)添加到窗体(frame)
		frame.add(panel);
		
		//2、设置窗体可见
		frame.setVisible(true);
		
	}

}

这里必须要注意一下,一定要导包,JFrame和JPanel,我们调用了这个就需要导包,导包的快捷键是control+alt+o(字母)。
细细的观察代码,我们发现我们设置了背景颜色(background color),尺寸(size),位置(location),可见(visible)等,这里要注意,一定要设置窗体可见,只有设置窗体可见你才能够看见,我们做了两个对象,一个是JFrame,另一个是JPanel,JPanel的对象要添加到窗体上面去。效果如图:
在这里插入图片描述

(由于设置了我个人屏幕设置了滤镜,实际效果颜色与之不一样,有细微差别)

画⚪

在面板上画一个⚪,这里先要说明这个⚪的坐标,这个坐标可不是圆心,在计算机里面,坐标系是子啊左上角,x朝右,y朝下,我们在画图工具了画圆的时候是从左上角往右下角拉,坐标的位置就在左上角的那个点,理论存在,开始实践(狗头)。

```java
public class YFrame extends JFrame {
	
	public YFrame() {
		
		YPanel panel = new YPanel();
		panel.setBackground(Color.LIGHT_GRAY);
		panel.setSize(500, 222);//面板大小
		this.add(panel);
		
		this.setSize(1200, 1000);
		//this.setLayout(null);//布局管理器,面板大小有意义
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setBackground(Color.BLACK);
		/*JPanel panel = new JPanel();
		panel.setBackground(new Color(0,122,122));
		this.add(panel);*/
		this.setVisible(true);
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new YFrame();
	}

}
class YPanel extends JPanel {
	
	//重写绘制方法paint alt /
	@Override
	public void paint(Graphics g) {//Graphics 画笔类型 g 代表当前的画笔
		
		g.setColor(Color.BLUE);
		super.paint(g);
		g.fillOval(100, 300, 100, 100);	
	}

通过这个就可以画一个⚪,实际上我们都只是使用里面JFrame和JPanel里面的函数,这也是Java比c简单地方。

简单控制

使用继承接口来完成,将代码改为:

public class YFrame extends JFrame {
	
	public YFrame() {
		
		YPanel panel = new YPanel();
		panel.setBackground(Color.LIGHT_GRAY);
		panel.setSize(500, 222);
		this.add(panel);
		//监听面板*****************************************************************
		this.addKeyListener(panel);
		//*******************************************
		this.setSize(1200, 1000);
		//this.setLayout(null);//布局管理器
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setBackground(Color.BLACK);
		/*JPanel panel = new JPanel();
		panel.setBackground(new Color(0,122,122));
		this.add(panel);*/
		this.setVisible(true);
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new YFrame();
	}

}
class YPanel extends JPanel implements KeyListener{//继承接口
	int x =100,y = 300;
	//重写绘制方法paint alt /
	@Override
	public void paint(Graphics g) {//Graphics 画笔类型 g 代表当前的画笔
		g.setColor(Color.BLUE);
		super.paint(g);
		g.fillOval(x, y, 100, 100);	
	}

	@Override
	public void keyTyped(KeyEvent e) {//敲击执行
		// TODO Auto-generated method stub
		
	}

	@Override
	public void keyPressed(KeyEvent e) {//按键执行
		if(e.getKeyCode() == KeyEvent.VK_UP){
			y=y-10;
		}
		if(e.getKeyCode() == KeyEvent.VK_DOWN){
			y=y+10;
		}
		if(e.getKeyCode() == KeyEvent.VK_RIGHT){
			x=x+10;
		}
		if(e.getKeyCode() == KeyEvent.VK_LEFT){
			x=x-10;
		}
		repaint();//重新绘制面板
		
	}

	@Override
	public void keyReleased(KeyEvent e) {//松键执行
		// TODO Auto-generated method stub
		
	}
}

下面那三个函数别自己打,不划算,你打完别人都做完了,把鼠标移到YPanel,选择add unimplemented methods。注意在窗体的构造方法里面添加监听。
现在就是一个可以移动的⚪,会了这个,画个鸡,画个蛇,画个海龟都可以让它动。

(个人学习总结,如有错误,敬请斧正,学习时间,20,11)

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值