GUI编程
怎么学?

  • 这是什么?
  • 它怎么玩?
  • 该如何去在我们平时运用?

组件:

  • 窗口
  • 弹窗
  • 面板
  • 文本框
  • 列表框
  • 按钮
  • 图片
  • 监听事件
  • 鼠标事件
  • 键盘事件
  • 破解工具

1.简介
GUI的核心:Swing 、AWT,(因为界面不美观,需要jre环境)

我们为什么要学习?
1.可以写出自己心中的一些小工具
2.了解mvc架构,了解监听!

2.AWT
2.1、Awt介绍
1.包含了很多类和接口! GUI:图形用户界面

2.2、组件和容器

Frame frame = new Frame("我的第一个程序");
frame.setVisible(true);//表示是否可见
frame.setSize(400,400);//设置大小
frame.setBackground(color.BULE);//设置背景颜色
frame.setLocation(400,400);//设置初始位置
frame.setResizable(false);//设置不可拉动
//执行完之后无法关闭

2.面板Panel

   Frame frame = new Frame("新窗口");Panel panel = new Panel();//设置布局frame.setLayout(null);frame.setBounds(300,300,500,500);frame.setBackground(new Color(40,161,35));panel.setBounds(50,50,400,400);panel.setBackground(new Color(243, 6, 53));//frame.add(panel)frame.add(panel);frame.setVisible(true);//监听窗口关闭事件frame.addWindowListener(new WindowAdapter() {//窗口点击关闭的事情@Overridepublic void windowClosing(WindowEvent e) {//结束解析System.exit(0);}});

3.布局管理器

  • 流式布局
     //frame.setLayout(new FlowLayout());//流式布局frame.setLayout(new FlowLayout(FlowLayout.LEFT));//流式布局
  • 东西南北中
 Frame frame = new Frame();Button east = new Button("East");Button west = new Button("West");Button north = new Button("North");Button south = new Button("South");Button center = new Button("Center");frame.add(east,BorderLayout.EAST);frame.add(west,BorderLayout.WEST);frame.add(north,BorderLayout.NORTH);frame.add(south,BorderLayout.SOUTH);frame.add(center,BorderLayout.CENTER);frame.setSize(200,200);frame.setVisible(true);
  • 表格布局
   Frame frame = new Frame();//组件 -按钮Button b1 = new Button("button1");Button b2 = new Button("button2");Button b3 = new Button("button3");Button b4 = new Button("button4");Button b5 = new Button("button5");Button b6 = new Button("button6");frame.setLayout(new GridLayout(3,2));frame.add(b1);frame.add(b2);frame.add(b3);frame.add(b4);frame.add(b5);frame.add(b6);frame.pack();//自动布局frame.setVisible(true);
 Frame frame = new Frame("布局按钮");frame.setSize(400,300);frame.setLocation(300,40);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));p1.add(new Button("East-1"),BorderLayout.EAST);p1.add(new Button("WEST-1"),BorderLayout.WEST);p2.add(new Button("p2-button-1"));p2.add(new Button("p2-button-2"));p1.add(p2,BorderLayout.CENTER);p3.add(new Button("East-1"),BorderLayout.EAST);p3.add(new Button("WEST-1"),BorderLayout.WEST);for (int i = 0; i < 4; i++) {p4.add(new Button("for-"+i));}p3.add(p4,BorderLayout.CENTER);frame.add(p1);frame.add(p3);frame.setVisible(true);

4.事件监听
当某个事情发生的时候,干什么?

5.输入框TextField

public static void main(String[] args) {//new MyFrameMyFrame myFrame = new MyFrame();}
}class MyFrame extends Frame{public MyFrame(){TextField textField = new TextField();add(textField);//监听输入的文字MyActionLinstener2 myActionLinstener2 = new MyActionLinstener2();textField.addActionListener(myActionLinstener2);pack();setVisible(true);//s设置编码textField.setEchoChar('*');}
}
class MyActionLinstener2 implements ActionListener{@Overridepublic void actionPerformed(ActionEvent e) {TextField field = (TextField) e.getSource();//获得一些资源,返回一个对象System.out.println(field.getText());}

简易计算器

package com.kuang;import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;/*** @Author* @Date 2021/5/26 10:31*/
public class Calandar {public static void main(String[] args) {new Calculator().loadFrame();}
}
class Calculator extends Frame{//属性TextField f1,f2,f3;//加载public void  loadFrame(){//三个文本框f1 = new TextField(10);f2 = new TextField(10);f3 = new TextField(20);Button button = new Button("=");Label label = new Label("+");button.addActionListener(new MyCalculatorLinstener(this));setLayout(new FlowLayout());add(f1);add(label);add(f2);add(button);add(f3);pack();setVisible(true);}}
//监听类
class MyCalculatorLinstener implements ActionListener{Calculator calculator =null;public MyCalculatorLinstener(Calculator calculator) {this.calculator=calculator;}@Overridepublic void actionPerformed(ActionEvent e) {//获得加数和被加数int n1=Integer.parseInt(calculator.f1.getText());int n2=Integer.parseInt(calculator.f2.getText());calculator.f3.setText(""+(n1+n2));calculator.f1.setText("");calculator.f2.setText("");}
}
//简化刚刚计算器代码package com.kuang;import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;/*** @Author* @Date 2021/5/26 10:31*/
public class Calandar {public static void main(String[] args) {new Calculator().loadFrame();}
}
class Calculator extends Frame{//属性TextField f1,f2,f3;//加载public void  loadFrame(){//三个文本框f1 = new TextField(10);f2 = new TextField(10);f3 = new TextField(20);Button button = new Button("=");Label label = new Label("+");button.addActionListener(new MyCalculatorLinstener());setLayout(new FlowLayout());add(f1);add(label);add(f2);add(button);add(f3);pack();setVisible(true);}private class MyCalculatorLinstener implements ActionListener{@Overridepublic void actionPerformed(ActionEvent e) {//获得加数和被加数int n1=Integer.parseInt(f1.getText());int n2=Integer.parseInt(f2.getText());f3.setText(""+(n1+n2));f1.setText("");f2.setText("");}}
}
//监听类

6.画笔Paint

package com.kuang;import java.awt.*;/*** @Author* @Date 2021/5/26 11:05*/
public class TestPaint {public static void main(String[] args) {new MyPaint().loadFrame();}
}class MyPaint extends Frame {public void loadFrame(){setVisible(true);setBounds(200,200,600,500);}//画笔@Overridepublic void paint(Graphics g) {//画笔需要有颜色,画笔可以画画//g.setColor(Color.red);g.drawOval(100,100,100,100);// g.fillOval(200,200,100,100);//g.setColor(Color.green);g.fillRect(150,200,200,200);}
}

7.鼠标监听
目的:实现鼠标画画!

package com.kuang;import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.Iterator;/*** @Author 鼠标监听事件* @Date 2021/5/26 11:36*/
public class TestMouse {public static void main(String[] args) {new MyFrame1("画画");}
}
class MyFrame1 extends Frame{ArrayList points=null;//画画需要画笔,需要监听鼠标当前的位置,需要集合来存储这个点public MyFrame1(String title) {super(title);setBounds(200,200,400,400);//存鼠标的点points = new ArrayList<>();//鼠标监听器,正对这个窗口this.addMouseListener(new MyMouseListener());setVisible(true);}@Overridepublic void paint(Graphics g) {Iterator iterator = points.iterator();while (iterator.hasNext()){Point point = (Point) iterator.next();g.setColor(Color.BLUE);g.fillOval(point.x,point.y,10,10);}}//添加一个点到我们界面上public void addPaint(Point point){points.add(point);}private class MyMouseListener extends MouseAdapter {//鼠标点击//弹起//按住不放@Overridepublic void mousePressed(MouseEvent e) {MyFrame1 myFrame1 = (MyFrame1) e.getSource();myFrame1.addPaint(new Point(e.getX(), e.getY()));myFrame1.repaint();}}
}

8.窗口监听

package com.kuang;import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;/*** @Author* @Date 2021/5/26 19:47*/
public class TestWindow {public static void main(String[] args) {new WindowFrame();}
}class WindowFrame extends Frame{public WindowFrame(){setBackground(Color.blue);setBounds(100,100,200,200);setVisible(true);this.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.out.println("你点击了退出");System.exit(0);}@Overridepublic void windowActivated(WindowEvent e) {WindowFrame source = (WindowFrame) e.getSource();source.setTitle("被激活了");System.out.println("你惦记了激活");}});}}

9.键盘监听

package com.kuang;import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;/*** @Author* @Date 2021/5/27 9:18*/
public class TestKeyBoard {public static void main(String[] args) {new keyFrame();}
}
class keyFrame extends Frame{public keyFrame(){setBounds(1,2,300,400);setVisible(true);this.addKeyListener(new KeyAdapter() {@Overridepublic void keyTyped(KeyEvent e) {super.keyTyped(e);}//键盘按下的键是哪一个@Overridepublic void keyPressed(KeyEvent e) {int keyCode = e.getKeyCode();System.out.println("keyCode = " + keyCode);if (keyCode == KeyEvent.VK_UP){System.out.println("你按下了上键");}}});}
}

3.Swing
1.container 容器
2.设置水平对齐
3.弹窗 Dialog

package com.kuang.swing;import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;/*** @Author* @Date 2021/5/27 9:46*/
public class DialogDemo extends JFrame {public DialogDemo()  {this.setVisible(true);this.setSize(700,500);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//Container container = this.getContentPane();container.setLayout(null);JButton jButton = new JButton("点击弹出一个对话框");jButton.setBounds(30,30,200,50);jButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {new MyDialogDemo();}});container.add(jButton);}public static void main(String[] args) {new DialogDemo();}
}
class MyDialogDemo extends JDialog{public MyDialogDemo() {this.setVisible(true);this.setBounds(100,100,500,500);Container contentPane = this.getContentPane();
//        contentPane.setLayout(null);contentPane.add(new Label("带你学习java"));}
}

4.标签
new Label(“xxx”);
图标:icon
图片:imageIcon

5.面板
JPanel 面板
JScroll文本域

package com.kuang.lesson5;import javax.swing.*;
import java.awt.*;/*** @Author* @Date 2021/5/27 19:37*/
public class JScrollDemo extends JFrame {public  JScrollDemo(){Container container = this.getContentPane();JTextArea jTextArea = new JTextArea(200, 200);jTextArea.setText("欢迎学习Jframe文本域");JScrollPane jScrollPane = new JScrollPane(jTextArea);container.add(jScrollPane);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);this.setVisible(true);this.setBounds(100,100,300,300);}public static void main(String[] args) {new JScrollDemo();}
}

6.按钮

单选按钮

package com.kuang.lesson5;import javax.swing.*;
import java.awt.*;/*** @Author* @Date 2021/5/27 19:51*/
public class JButton1 extends JFrame {public JButton1()   {Container container = this.getContentPane();JRadioButton radio01 = new JRadioButton("radio01");JRadioButton radio02 = new JRadioButton("radio02");JRadioButton radio03 = new JRadioButton("radio03");ButtonGroup group = new ButtonGroup();group.add(radio01);group.add(radio02);group.add(radio03);container.add(radio01,BorderLayout.CENTER);container.add(radio02,BorderLayout.SOUTH);container.add(radio03,BorderLayout.NORTH);setSize(300,300);setVisible(true);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {new JButton1();}
}

复选按钮

package com.kuang.lesson5;import javax.swing.*;
import java.awt.*;/*** @Author* @Date 2021/5/27 20:00*/
public class JButton2 extends JFrame{public JButton2() {Container container = this.getContentPane();JCheckBox jCheckBox1 = new JCheckBox("01");JCheckBox jCheckBox2 = new JCheckBox("02");JCheckBox jCheckBox3 = new JCheckBox("03");container.add(jCheckBox1,BorderLayout.CENTER);container.add(jCheckBox2,BorderLayout.SOUTH);container.add(jCheckBox3,BorderLayout.NORTH);setSize(300,300);setVisible(true);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {new JButton2();}
}

7.列表

  • 下拉框
package com.kuang.lesson06;import javax.swing.*;
import java.awt.*;/*** @Author* @Date 2021/5/27 20:05*/
public class TestComboboxDemo01 extends JFrame {public TestComboboxDemo01()  {Container container = this.getContentPane();/*** 下拉框*/JComboBox comboBox = new JComboBox();comboBox.addItem(null);comboBox.addItem("正在热映");comboBox.addItem("已下架");comboBox.addItem("即将上映");container.add(comboBox);setVisible(true);setSize(500,300);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {new TestComboboxDemo01();}
}
  • 列表框
package com.kuang.lesson06;import javax.swing.*;
import java.awt.*;/*** @Author* @Date 2021/5/27 20:05*/
public class TestComboboxDemo02 extends JFrame {public TestComboboxDemo02()  {Container container = this.getContentPane();String[] context={"1","2","3"};JList jList = new JList(context);container.add(jList);setVisible(true);setSize(500,300);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {new TestComboboxDemo02();}
}

8.文本框

  • 文本框
package com.kuang.lesson06;import javax.swing.*;
import java.awt.*;/*** @Author* @Date 2021/5/27 20:13*/
public class TestTextDemo01 extends JFrame {public TestTextDemo01() {Container container = this.getContentPane();JTextField jTextField1 = new JTextField("01");JTextField jTextField2 = new JTextField("02",20);container.add(jTextField1,BorderLayout.NORTH);container.add(jTextField2,BorderLayout.SOUTH);setVisible(true);setSize(300,200);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}public static void main(String[] args) {new TestTextDemo01();}
}
  • 密码框
    JPasswordfield

  • 文本域
    JTextArea //可以设置行列

java GUI学习相关推荐

  1. JAVA——GUI学习

    1.简介 GUI的核心技术:Swing AWT 快被淘汰了! 1.因为界面不美观 2.需要jre环境 3.主要是能了解MVC架构,了解监听 2.AWT 抽象窗口工具包 (Abstract Window ...

  2. Java GUI编程学习

    Java GUI编程学习 GUI编程 告诉大家怎么学? 这是什么? 他怎么玩? 该如何平时运用它? 组件 窗口 弹窗 面板 文本框 列表框 按钮 图片 监听事件 鼠标 键盘事件 破解工具 1.简介 G ...

  3. Java程序设计学习笔记(四)—— GUI

    时间:2016-3-24 11:24 天道酬勤 --GUI(图形用户界面)     1.GUI         Graphical User Interface(图形用户接口).         用图 ...

  4. java 中gui的作用_java学习中最应该注意的Java GUI用户界面以何为基础

    java中的GUI编程(Graphic User Interface,图形用户接口),是在它的笼统窗(Abstract Window Toolkit,AWT)上完成的,java.awt是AWT的东西类 ...

  5. 初级java开发学习路线_成为初级全栈Web开发人员的10分钟路线图

    初级java开发学习路线 So you have started your journey into the world of web development. But what do you lea ...

  6. java gui 结构_java gui教学图形界面的层次结构.ppt

    java gui教学图形界面的层次结构.ppt 还剩 13页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: 事件 ...

  7. Java命令学习系列(四)——jstat

    转载自 Java命令学习系列(四)--jstat jstat(JVM Statistics Monitoring Tool)是用于监控虚拟机各种运行状态信息的命令行工具.他可以显示本地或远程虚拟机进程 ...

  8. Java新手学习路线

    ------Java新手学习路线------ 第一阶段:J2SE(java基础部分) java开发前奏; . ①计算机基本原理,Java语言发展简史以及开发环境的搭建,体验Java程序的开发,环境变量 ...

  9. Java的学习——培训或自学

    JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向呢 ...

最新文章

  1. SpringBoot直接访问图片资源
  2. 如何对付费广告流量进行标记?
  3. 0429 Scrum团队成立与第6-7章读后感
  4. llinux 调整swap方法
  5. EntityFramwork常见问题
  6. 十一、python生成器和迭代器
  7. 广州运营开放式数据交易平台发力大数据业务
  8. 拓端tecdat|R语言生存分析可视化分析
  9. 3款简单实用的在线PCR引物设计软件
  10. matlab 2020b linux版本 下载
  11. 飞行控制系统的快速原型设计与半物理仿真方法及系统ETest_DEV
  12. 【半年总结】蓦然回首
  13. 2016 0CTF rsa
  14. 嵌入式Flash设备的文件系统:jffs/jfss2和yasffs/yasffs2
  15. 6款好用的在线思维导图工具推荐
  16. 【学习笔记】欧拉筛法(线性筛素数)
  17. bad_pool_caller蓝屏故障分析
  18. 2048和多地址入口_邮箱163登录入口?邮箱163注册格式是什么?
  19. 出门在外如何保管毕业证原件_出门在外时如何控制HomeKit智能家居
  20. C语言中scanf()函数中的是什么

热门文章

  1. 实时语义分割之ICNet
  2. 《非暴力沟通》:有些话真的可以好好说
  3. 【阿不】深入ASP.NET数据绑定(中)—数据双向绑定机理
  4. 规避RDP协议被屏蔽,lanproxy+noVNC实现web远程桌面
  5. jquery each循环遍历完再执行的方法
  6. Vue 循环的 key 作用
  7. java protostuff 序列化_使用Protostuff序列化
  8. keras 线性回归 预测
  9. 学习随记四十五——希尔排序
  10. Vchain:可验证的查询