java GUI编程 内含swing基础知识 小游戏开发基础
Posted ꧁༺空༒白༻꧂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java GUI编程 内含swing基础知识 小游戏开发基础相关的知识,希望对你有一定的参考价值。
GUI编程
告诉大家怎么学?
- 这是什么?
- 它怎么玩?
- 如何运用?
组件
- 窗口
- 弹窗
- 面板
- 文本框
- 列表框
- 按钮
- 图片
- 监听事件
- 鼠标
- 键盘事件
- 外挂
1、简介
Gui编程核心 Swing AWT
1、因为界面不美观
2、需要jre环境!
了解MVC架构,了解监听
2、AWT
介绍
- 包含很多接口和类!GUI!
- 元素:窗口,按钮,文本框
- java.awt
组件和容器
Frame
一个简单窗口的实现
import java.awt.*;
public class frame {
public static void main(String[] args) {
//Frame,Jdk,看源码
Frame frame = new Frame();
//需要设置可见性
frame.setVisible(true);
//设置窗口大小
frame.setSize(400, 400);
//设置背景色
frame.setBackground(new Color(150, 71, 113));
//弹出的初始位置
frame.setLocation(200, 200);
//设置大小固定
frame.setResizable(false);
}
}
多个窗口的实现
import java.awt.*;
public class frame1 {
public static void main(String[] args) {
MyFrame myFrame1 = new MyFrame(200, 200, 200, 200, Color.blue);
MyFrame myFrame2 = new MyFrame(200, 200, 200, 200, Color.blue);
MyFrame myFrame3 = new MyFrame(200, 200, 200, 200, Color.blue);
MyFrame myFrame4 = new MyFrame(200, 200, 200, 200, Color.blue);
}
}
class MyFrame extends Frame{
static int id=0;//可能存在多个窗口,我们需要一个计数器
public MyFrame(int x, int y, int w, int h, Color color){
super("Myframe+" + (++id));
setBackground(color);
setSize(w,h);
setLocation(x, y);
//setBounds(x,y,w,h);
setVisible(true);
}
}
同时发现一个问题,窗口不能关掉,停止Java程序,如下
//监听事件,监听窗口关闭事件 System.exit(0)
//设配器模式
frame.addWindowListener(new WindowAdapter() {
//窗口点击关闭时候需要做的事情
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
面板
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class test {
public static void main(String[] args) {
Frame frame = new Frame();
Panel panel = new Panel();
//设置布局
frame.setLayout(null);
//坐标
frame.setBounds(300,300,500,500);
frame.setBackground(new Color(32,24,42));
//相对于frame面板坐标
panel.setBounds(50,50,400,400);
panel.setBackground(new Color(118, 162, 51));
frame.add(panel);
frame.setVisible(true);
//监听事件,监听窗口关闭事件 System.exit(0)
//设配器模式
frame.addWindowListener(new WindowAdapter() {
//窗口点击关闭时候需要做的事情
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
布局管理器
- 流式布局
import java.awt.*;
public class test {
public static void main(String[] args) {
Frame frame = new Frame();
//组件-按钮
Button button1 = new Button("button1");
Button button2 = new Button("button2");
Button button3 = new Button("button3");
//设置为流式布局
//frame.setLayout(new FlowLayout());
frame.setLayout(new FlowLayout(FlowLayout.LEFT));
frame.setLayout(new FlowLayout(FlowLayout.RIGHT));
frame.setSize(200,200);
//把按钮添加上去
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.setVisible(true);
}
}
- 东西南北中
import java.awt.*;
public class test {
public static void main(String[] args) {
Frame frame = new Frame();
//组件-按钮
Button east = new Button("east");
Button west = new Button("west");
Button south = new Button("south");
Button north = new Button("north");
Button center = new Button("center");
frame.add(east,BorderLayout.EAST);
frame.add(west,BorderLayout.WEST);
frame.add(south,BorderLayout.SOUTH);
frame.add(north,BorderLayout.NORTH);
frame.add(center,BorderLayout.CENTER);
frame.setSize(200,200);
frame.setVisible(true);
}
}
- 表格布局
import java.awt.*;
public class test {
public static void main(String[] args) {
Frame frame = new Frame();
//组件-按钮
Button a = new Button("1");
Button b = new Button("2");
Button c = new Button("3");
Button d = new Button("4");
Button e = new Button("5");
Button f = new Button("6");
frame.setLayout(new GridLayout(3,2));
frame.add(a);
frame.add(b);
frame.add(c);
frame.add(d);
frame.add(e);
frame.add(f);
frame.pack();//java函数
frame.setVisible(true);
}
}
总结练习
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class test {
public static void main(String[] args) {
Frame frame = new Frame();
frame.setSize(400,300);
frame.setLocation(300, 300);
frame.setBackground(Color.BLACK);
frame.setVisible(true);
frame.setLayout(new GridLayout(2,1));
//四个面板
Panel p1=new Panel(new BorderLayout());
Panel p2=new Panel(new GridLayout(2,1));
Panel p3=new Panel(new BorderLayout());
Panel p4=new Panel(new GridLayout(2,2));
//上面ok
p1.add(new Button("E1"),BorderLayout.EAST);
p1.add(new Button("E2"),BorderLayout.WEST);
p2.add(new Button("p2-1"));
p2.add(new Button("p2-2"));
p1.add(p2,BorderLayout.CENTER);
//下面
p3.add(new Button("E3"),BorderLayout.EAST);
p3.add(new Button("E4"),BorderLayout.WEST);
p4.add(new Button("p4-1"));
p4.add(new Button("p4-2"));
p4.add(new Button("p4-2"));
p4.add(new Button("p4-2"));
p3.add(p4,BorderLayout.CENTER);
frame.add(p1);
frame.add(p3);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
- Frame是一个顶级窗口
- Panel无法单独显示,必须添加到某个容器中。
- 布局管理器
- 流式
- 东西南北中
- 表格
- 大小,定位,背景颜色,可见性,监听
事件监听
当某个事件发生的时候,干什么?
一个按钮一个事件
import java.awt.*;
import java.awt.event.*;
public class test {
public static void main(String[] args) {
//按下按钮触发事件
Frame frame = new Frame();
Button button = new Button();
//因为addActionListener()需要一个ActionListener,所以我们需要构造一个ActionListener
MyActionListener myActionListener=new MyActionListener();
button.addActionListener(myActionListener);
frame.add(button,BorderLayout.CENTER);
frame.pack();
windowClose(frame);//关闭窗口
frame.setVisible(true);
//网络编程 按下触发
}
//关闭窗口的事件
private static void windowClose(Frame frame){
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
class MyActionListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
System.out.println("加油,别放弃!");
}
}
- 两个按钮实现一个监听
import java.awt.*;
import java.awt.event.*;
import java.sql.SQLOutput;
public class test {
public static void main(String[] args) {
//按下按钮触发事件
Frame frame = new Frame("开关");
Button button1 = new Button("start");
Button button2 = new Button("stop");
button1.setActionCommand("继续加油");
button2.setActionCommand("别放弃");
MyActionListener myActionListener=new MyActionListener();
button1.addActionListener(myActionListener);
button2.addActionListener(myActionListener);
frame.add(button1,BorderLayout.NORTH);
frame.add(button2, BorderLayout.SOUTH);
windowClose(frame);
frame.pack();
frame.setVisible(true);
}
//关闭窗口的事件
private static void windowClose(Frame frame){
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
class MyActionListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
// System.out.println("按钮点击:msg=>"+e.getActionCommand());
e.getActionCommand();
if(e.getActionCommand().equals("继续加油") ){
System.out.println("欢迎光临");
}else{
System.out.println("再见");
}
}
}
输入框事件监听
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.SQLOutput;
public class test {
public static void main(String[] args) {
MyFrame myFrame = new MyFrame();
windowClose(myFrame);
}
//关闭窗口的事件
private static void windowClose(Frame frame){
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
class MyActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
TextField field=(TextField)e.getSource();//获取一些资源,返回一个对象
Syste以上是关于java GUI编程 内含swing基础知识 小游戏开发基础的主要内容,如果未能解决你的问题,请参考以下文章
Java基础知识_毕向东_Java基础视频教程笔记(22-25 GUI 网络编程 正则)