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. 七牛访谈|秒拍&小咖秀CTO汤力嘉:产品的生存系于技术
  2. linux中export和source的作用和区别
  3. 阅读《构建之法》1-5章
  4. mysql未找到bcrypt_使用mysql和bcryptjs时出现意外的标识符语法错误
  5. Ubuntu解压文件的方法
  6. Java回调机制总结
  7. Microsoft Visio 2010简体中文版
  8. shp格式文件出带审图号的地图
  9. 国科大学习资料--矩阵分析与应用(李保滨)--2016年期末考试试卷
  10. 计算机运行命令jar,jar文件打开教程
  11. RQNOJ愚蠢的矿工
  12. 微型计算机煎蛋网,煎蛋网 No.4950004
  13. RS485通信与Modbus协议
  14. Python下载qq音乐歌曲实例教程
  15. 未来10年互联网的十大发展趋势
  16. Codeforces Round #469 (Div. 2) C、 Zebras
  17. 《不花钱学法语》--18个网站,强化法语六力
  18. java上看小说软件_i悦读小说阅读软件 For java
  19. Qt 字体字号和字体像素关系
  20. Spring Cloud学习笔记—网关Spring Cloud Gateway官网教程实操练习

热门文章

  1. Linux学习笔记【part2】网络配置与远程登录
  2. Android 10.0下拉通知栏 通知列表 添加通知头
  3. js阻止移动端下拉滑动效果
  4. 百度HTTPS认证Apache http自动跳转到https
  5. 架构思想|代码的味道与启发
  6. python面向对象-老王开枪
  7. SpringBoot整合完成Themeleaf完成登录功能
  8. Mac中Sip Pro屏幕取色工具的使用
  9. 手机基站定位数据可视分析
  10. MySQL索引之最左匹配原则