java GUI编程 内含swing基础知识 小游戏开发基础

Posted 乘凉者 栽树人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java GUI编程 内含swing基础知识 小游戏开发基础相关的知识,希望对你有一定的参考价值。

GUI编程

告诉大家怎么学?

  • 这是什么?
  • 它怎么玩?
  • 如何运用?

组件

  • 窗口
  • 弹窗
  • 面板
  • 文本框
  • 列表框
  • 按钮
  • 图片
  • 监听事件
  • 鼠标
  • 键盘事件
  • 外挂

1、简介

Gui编程核心 Swing AWT

1、因为界面不美观

2、需要jre环境!

了解MVC架构,了解监听

2、AWT

介绍

  1. 包含很多接口和类!GUI!
  2. 元素:窗口,按钮,文本框
  3. 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);
            
        );

    

  1. Frame是一个顶级窗口
  2. Panel无法单独显示,必须添加到某个容器中。
  3. 布局管理器
    1. 流式
    2. 东西南北中
    3. 表格
  4. 大小,定位,背景颜色,可见性,监听

事件监听

当某个事件发生的时候,干什么?

一个按钮一个事件

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();//获取一些资源,返回一个对象
        System.out.println(fieldjava GUI编程(swing)之一 swing简单介绍

Java基础知识_毕向东_Java基础视频教程笔记(22-25 GUI 网络编程 正则)

使用 Java 在 GUI 编程中混合 awt 和 swing

java GUI编程(swing)之二swing按钮组件

Java基础——GUI编程

java GUI编程(swing)之八swing绘图