zoukankan      html  css  js  c++  java
  • GUI编程

    GUI编程介绍 

    Frame介绍

     1 package Gui;
     2 
     3 import java.awt.*;
     4 
     5 /**
     6  * author liulei
     7  * data  5.29
     8  * since 1.8
     9  * version 1.0
    10  * Description   实现一个简易的frame窗口界面,并设置自定义frame
    11  */
    12 public class Test1 {
    13     public static void main(String[] args) {
    14         //Frame
    15         Frame frame = new Frame("我的第一个java图像界面窗口");
    16         //需要设置可视化  w h
    17         frame.setVisible(true);
    18         //大小
    19         frame.setSize(400,400);
    20         //设置背景颜色
    21         frame.setBackground(new Color(125,55,55));
    22         //弹出初始位置
    23         frame.setLocation(200,200);
    24         //设置大小固定
    25         frame.setResizable(false);
    26         MyFrame myFrame1 = new MyFrame(100,100,200,200,Color.black);
    27         MyFrame myFrame2 = new MyFrame(400,100,200,200,Color.blue);
    28         MyFrame myFrame3 = new MyFrame(100,400,200,200,Color.yellow);
    29         MyFrame myFrame4 = new MyFrame(400,400,200,200,Color.red);
    30 
    31     }
    32 
    33 }
    34 class MyFrame extends Frame{
    35     static int id = 0;
    36 
    37     public MyFrame(int x,int y,int w,int h,Color color) {
    38         super("Myframe+" + (++id));
    39         setBackground(color);
    40         setBounds(x,y,w,h);
    41         setVisible(true);
    42     }
    43 }
    View Code

    panel面板介绍

     1 package Gui;
     2 
     3 import javafx.scene.layout.Pane;
     4 
     5 import java.awt.*;
     6 import java.awt.event.KeyAdapter;
     7 import java.awt.event.WindowAdapter;
     8 import java.awt.event.WindowEvent;
     9 
    10 /**
    11  * author liulei
    12  * data  5.29
    13  * since 1.8
    14  * version 1.0
    15  * Description  awt的panel面板介绍
    16  */
    17 public class Test2 {
    18     public static void main(String[] args) {
    19         Frame frame = new Frame();
    20         //布局的概念
    21         Panel panel = new Panel();
    22         frame.setLayout(null);
    23         //坐标
    24         frame.setBounds(300,300,500,500);
    25         frame.setBackground(new Color(40,161,35));
    26         //panel设置坐标,相对于frame
    27         panel.setBounds(50,50,400,400);
    28         panel.setBackground(new Color(166,13,60));
    29         frame.add(panel);
    30         frame.setVisible(true);
    31         //监听事件
    32         frame.addWindowListener(new WindowAdapter() {
    33             @Override
    34             public void windowClosing(WindowEvent e) {
    35                 System.exit(0);
    36             }
    37         });
    38     }
    39 }
    awt的panel面板介绍

    3中布局讲解

     1 package Gui;
     2 
     3 import java.awt.*;
     4 import java.awt.event.WindowAdapter;
     5 import java.awt.event.WindowEvent;
     6 
     7 /**
     8  * author liulei
     9  * data  5.29
    10  * since 1.8
    11  * version 1.0
    12  * Description  布局介绍
    13  */
    14 public class Test3 {
    15     public static void main(String[] args) {
    16        // layout1();
    17         //layout2();
    18         layout3();
    19     }
    20     public static void layout1(){//流式布局
    21         Frame frame =new Frame();
    22         Button btn1 = new Button("btn1");
    23         Button btn2 = new Button("btn2");
    24         Button btn3 = new Button("btn3");
    25         frame.setLayout(new FlowLayout(FlowLayout.RIGHT));
    26         frame.setSize(200,200);
    27         frame.add(btn1);
    28         frame.add(btn2);
    29         frame.add(btn3);
    30         frame.setVisible(true);
    31         frame.setBounds(200,200,200,200);
    32         frame.addWindowListener(new WindowAdapter() {
    33             @Override
    34             public void windowClosing(WindowEvent e) {
    35                 System.exit(0);
    36             }
    37         });
    38     }
    39     public static void layout2(){//
    40         Frame frame =new Frame();
    41         Button btn1 = new Button("east");
    42         Button btn2 = new Button("west");
    43         Button btn3 = new Button("south");
    44         Button btn4 = new Button("north");
    45         Button btn5 = new Button("center");
    46         //frame.setLayout(new BorderLayout(BorderLayout.CENTER));
    47         frame.setSize(200,200);
    48         frame.add(btn1,BorderLayout.EAST);
    49         frame.add(btn2,BorderLayout.WEST);
    50         frame.add(btn3,BorderLayout.SOUTH);
    51         frame.add(btn4,BorderLayout.NORTH);
    52         frame.add(btn5,BorderLayout.CENTER);
    53         frame.setVisible(true);
    54         frame.setBounds(200,200,200,200);
    55         frame.addWindowListener(new WindowAdapter() {
    56             @Override
    57             public void windowClosing(WindowEvent e) {
    58                 System.exit(0);
    59             }
    60         });
    61     }
    62     public static void layout3(){
    63         Frame frame =new Frame();
    64         Button btn1 = new Button("btn1");
    65         Button btn2 = new Button("btn2");
    66         Button btn3 = new Button("btn3");
    67         Button btn4 = new Button("btn4");
    68         Button btn5 = new Button("btn5");
    69         Button btn6 = new Button("btn6");
    70         frame.setLayout(new GridLayout(3,2));
    71         frame.setSize(200,200);
    72         frame.add(btn1);
    73         frame.add(btn2);
    74         frame.add(btn3);
    75         frame.add(btn4);
    76         frame.add(btn5);
    77         frame.add(btn6);
    78         frame.pack();//自动选择一个最优秀的布局进行设置
    79         frame.setVisible(true);
    80         frame.setBounds(200,200,200,200);
    81         frame.addWindowListener(new WindowAdapter() {
    82             @Override
    83             public void windowClosing(WindowEvent e) {
    84                 System.exit(0);
    85             }
    86         });
    87     }
    88 }
    布局介绍
     1 package Gui;
     2 
     3 import java.awt.*;
     4 import java.awt.event.WindowAdapter;
     5 import java.awt.event.WindowEvent;
     6 
     7 /**
     8  * author liulei
     9  * data  5.29
    10  * since 1.8
    11  * version 1.0
    12  * Description 实现特定的一个布局
    13  */
    14 public class Test4 {
    15     public static void main(String[] args) {
    16         Frame frame =new Frame();
    17         frame.setSize(400,300);
    18         frame.setLocation(300,400);
    19         frame.setBackground(Color.white);
    20         frame.setLayout(new GridLayout(2,1));
    21 
    22         //四个面板
    23         Panel p1 = new Panel(new BorderLayout());
    24         Panel p2 = new Panel(new GridLayout(2,1));
    25         Panel p3 = new Panel(new BorderLayout());
    26         Panel p4 = new Panel(new GridLayout(2,2));
    27         p1.add(new Button("east"),BorderLayout.EAST);
    28         p1.add(new Button("west"),BorderLayout.WEST);
    29         p2.add(new Button());
    30         p2.add(new Button());
    31         p1.add(p2,BorderLayout.CENTER);
    32 
    33         p3.add(new Button("east"),BorderLayout.EAST);
    34         p3.add(new Button("west"),BorderLayout.WEST);
    35         p4.add(new Button());
    36         p4.add(new Button());
    37         p4.add(new Button());
    38         p4.add(new Button());
    39         p3.add(p4,BorderLayout.CENTER);
    40         frame.add(p1);
    41         frame.add(p3);
    42         frame.setVisible(true);
    43         //frame.pack();
    44        // frame.setBounds(200,200,400,300);
    45         frame.addWindowListener(new WindowAdapter() {
    46             @Override
    47             public void windowClosing(WindowEvent e) {
    48                 System.exit(0);
    49             }
    50         });
    51     }
    52 }
    实现特定的一个布局

    如图:

    事件监听

     1 package Gui;
     2 
     3 import java.awt.*;
     4 import java.awt.event.ActionEvent;
     5 import java.awt.event.ActionListener;
     6 import java.awt.event.WindowAdapter;
     7 import java.awt.event.WindowEvent;
     8 
     9 /**
    10  * author liulei
    11  * data
    12  * since 1.8
    13  * version 1.0
    14  * Description  按钮点击事件
    15  */
    16 public class Test5 {
    17     public static void main(String[] args) {
    18         Frame frame = new Frame();
    19         Button btn = new Button();
    20         btn.addActionListener(new ActionListener() {
    21             @Override
    22             public void actionPerformed(ActionEvent e) {
    23                 System.out.println("btn 被点击");
    24             }
    25         });
    26         frame.add(btn,BorderLayout.CENTER);
    27         frame.pack();
    28         frame.setBounds(200,200,200,200);
    29         frame.setVisible(true);
    30         frame.addWindowListener(new WindowAdapter() {
    31             @Override
    32             public void windowClosing(WindowEvent e) {
    33                 System.exit(0);
    34             }
    35         });
    36 
    37     }
    38 }
    按钮点击事件
     1 package Gui;
     2 
     3 import java.awt.*;
     4 import java.awt.event.ActionEvent;
     5 import java.awt.event.ActionListener;
     6 
     7 /**
     8  * author liulei
     9  * data   5.30
    10  * since 1.8
    11  * version 1.0
    12  * Description 学习使用文本框,并设置监听事件,实现简易加法计算机
    13  */
    14 public class Test6 {
    15     public static void main(String[] args) {
    16         new Calculator();
    17     }
    18 }
    19 class Calculator extends Frame{
    20     public Calculator() {
    21         //三个文本框
    22         TextField num1 = new TextField(10);
    23         TextField num2 = new TextField(10);
    24         TextField num3 = new TextField(10);
    25 
    26         //一个按钮
    27         Button btn = new Button("=");
    28         Label label = new Label("+");
    29         btn.addActionListener(new ActionListener() {
    30             @Override
    31             public void actionPerformed(ActionEvent e) {
    32                 int n1 = Integer.parseInt(num1.getText());
    33                 int n2 = Integer.parseInt(num2.getText());
    34                 num3.setText(""+(n1+n2));
    35                 num1.setText("");
    36                 num2.setText("");
    37             }
    38         });
    39         setLayout(new FlowLayout());
    40         //布局
    41         add(num1);
    42         add(label);
    43         add(num2);
    44         add(btn);
    45         add(num3);
    46         pack();
    47         setVisible(true);
    48     }
    49 }
    实现简易加法计算机

    鼠标监听与画笔paint

     1 package Gui;
     2 
     3 import java.awt.*;
     4 import java.awt.event.MouseAdapter;
     5 import java.awt.event.MouseEvent;
     6 import java.awt.event.WindowAdapter;
     7 import java.awt.event.WindowEvent;
     8 import java.util.ArrayList;
     9 import java.util.Iterator;
    10 
    11 /**
    12  * author liulei
    13  * data   5.30
    14  * since 1.8
    15  * version 1.0
    16  * Description  监听鼠标,并进行画笔操作
    17  */
    18 public class Test7 {
    19     public static void main(String[] args) {
    20         new MyFrame1("画笔");
    21     }
    22 }
    23 class MyFrame1 extends Frame {
    24     //画画需要画笔,需要监听鼠标当前的位置,需要集合来进行存储这个点
    25     ArrayList points;
    26     public MyFrame1(String title){
    27         super(title);
    28         setBounds(200,200,400,3010);
    29         //setSize(200,200);
    30         points = new ArrayList<>();
    31         setVisible(true);
    32         pack();
    33         //鼠标监听器,正对这个窗口
    34         this.addMouseListener(new MyMouseListener());
    35         this.addWindowListener(new WindowAdapter() {
    36             @Override
    37             public void windowClosing(WindowEvent e) {
    38                 System.exit(0);
    39             }
    40         });
    41     }
    42 
    43     @Override
    44     public void paint(Graphics g) {
    45         //画画,监听鼠标事件
    46         Iterator i  = points.iterator();
    47         while (i.hasNext()){
    48             Point point = (Point) i.next();
    49             g.setColor(Color.red);
    50             g.fillOval(point.x,point.y,10,10);
    51         }
    52     }
    53     //添加一个点到界面上
    54     public void addPaint(Point point){
    55         points.add(point);
    56     }
    57     //适配器模式
    58     private class MyMouseListener extends MouseAdapter{
    59         @Override
    60         public void mousePressed(MouseEvent e) {
    61             MyFrame1 frame  = (MyFrame1)e.getSource();//鼠标点击就会产生一个点
    62 
    63             frame.addPaint(new Point(e.getX(),e.getY()));
    64             //每次点击鼠标都需要重画一次
    65             frame.repaint();
    66         }
    67     }
    68 }
    监听鼠标,并进行画笔操作

    键盘监听

     1 package Gui;
     2 
     3 import java.awt.*;
     4 import java.awt.event.KeyAdapter;
     5 import java.awt.event.KeyEvent;
     6 
     7 /**
     8  * author liulei
     9  * data  5.30
    10  * since 1.8
    11  * version 1.0
    12  * Description  键盘监听事件
    13  */
    14 public class Test8 {
    15     public static void main(String[] args) {
    16       new KeyFrame();
    17     }
    18 }
    19 class KeyFrame extends Frame{
    20     public KeyFrame() throws HeadlessException {
    21         setBounds(1,2,300,300);
    22         setVisible(true);
    23         this.addKeyListener(new KeyAdapter() {
    24             @Override//键盘按下
    25             public void keyPressed(KeyEvent e) {
    26                 //获得键盘按下的是那一个,当前的码
    27                 int keycode = e.getKeyCode();
    28                 System.out.println(keycode);
    29                 if (keycode == KeyEvent.VK_UP){
    30                     System.out.println("你按了上键");
    31                 }
    32             }
    33         });
    34     }
    35 }
    View Code

    Swing的JFrame窗体

     1 package Gui;
     2 
     3 import javax.swing.*;
     4 import java.awt.*;
     5 
     6 /**
     7  * author liulei
     8  * data   5.30
     9  * since 1.8
    10  * version 1.0
    11  * Description  swing编程
    12  */
    13 public class Test9 extends JFrame{
    14     public static void main(String[] args) {
    15             new Test9().init();
    16     }
    17     public void init(){
    18         JFrame jf  = new JFrame("这是个jframe窗口");
    19         jf.setVisible(true);
    20         //jf.setBounds(100,100,200,200);
    21         jf.setBackground(Color.red);
    22         JLabel label = new JLabel("jlabel");
    23         label.setHorizontalAlignment(SwingConstants.CENTER);
    24         jf.add(label);
    25         //容器实例化
    26         Container container = jf.getContentPane();
    27         container.setBackground(Color.yellow);
    28         //关闭窗口
    29         jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    30 
    31     }
    32 }
    swing编程

    JDialog弹窗

     1 package Gui;
     2 
     3 import javax.swing.*;
     4 import java.awt.*;
     5 import java.awt.event.ActionEvent;
     6 import java.awt.event.ActionListener;
     7 
     8 /**
     9  * author liulei
    10  * data  5.30
    11  * since 1.8
    12  * version 1.0
    13  * Description  弹窗Dialog
    14  */
    15 public class Test10 extends JFrame {
    16     public Test10() {
    17         this.setVisible(true);
    18         this.setSize(700,500);
    19         this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    20         Container container = this.getContentPane();
    21         container.setLayout(null);
    22         JButton button = new JButton("点击弹出一个框");
    23         button.setBounds(30,30,200,200);
    24 
    25         button.addActionListener(new ActionListener() {
    26             @Override
    27             public void actionPerformed(ActionEvent e) {
    28                 //弹窗事件
    29                 new Mydialog();
    30             }
    31         });
    32         container.add(button);
    33     }
    34     public static void main(String[] args) {
    35         new Test10();
    36     }
    37 }
    38 class Mydialog extends JDialog{
    39     public Mydialog( ) {
    40         this.setVisible(true);
    41         this.setBounds(10,10,300,300);
    42         //this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    43         Container container = this.getContentPane();
    44         container.setLayout(null);
    45         Label label = new Label("java");
    46         label.setSize(100,100);
    47         container.add(label);
    48     }
    49 }
    弹窗Dialog

    图标

     1 package Gui;
     2 
     3 import javax.swing.*;
     4 import java.awt.*;
     5 import java.net.URL;
     6 
     7 /**
     8  * author liulei
     9  * data  5.30
    10  * since 1.8
    11  * version 1.0
    12  * Description  添加图标
    13  */
    14 public class Test11 extends JFrame{
    15     public Test11() {
    16         //获取图片的图标
    17         JLabel label = new JLabel("ImageIcon");
    18         URL url = Test11.class.getResource("a.jpg");
    19         System.out.println(url);
    20         ImageIcon imageIcon = new ImageIcon(url);//命名不要冲突
    21         label.setIcon(imageIcon);
    22         label.setHorizontalAlignment(SwingConstants.CENTER);
    23         Container container = getContentPane();
    24         container.add(label);
    25         setVisible(true);
    26         setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    27         setBounds(100,100,200,200);
    28     }
    29 
    30     public static void main(String[] args) {
    31       new Test11();
    32     }
    33 }
    添加图标

    下拉框,列表框

     1 package Gui;
     2 
     3 import javax.swing.*;
     4 import java.awt.*;
     5 import java.util.Vector;
     6 
     7 /**
     8  * author liulei
     9  * data
    10  * since 1.8
    11  * version 1.0
    12  * Description  下拉列表框
    13  */
    14 public class Test14 extends JFrame{
    15     public static void main(String[] args) {
    16         new Test14();
    17     }
    18 
    19     public Test14() {
    20         //test1();
    21         test2();
    22     }
    23     public void test1(){
    24         Container container = this.getContentPane();
    25         JComboBox status = new JComboBox();
    26         status.addItem("正在热映");
    27         status.addItem("已经下架");
    28         status.addItem("即将上映");
    29         container.add(status);
    30         this.setSize(500,400);
    31         this.setVisible(true);
    32         setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    33     }
    34     public void test2(){
    35         Container container = this.getContentPane();
    36        // List a = new List();
    37         Vector contents = new Vector();
    38         JList  list =  new JList(contents);
    39 
    40         contents.add("1");
    41         contents.add("2");
    42         contents.add("3");
    43         container.add(list);
    44         this.setSize(500,400);
    45         this.setVisible(true);
    46         setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    47     }
    48 }
    View Code

    单选框  多选框

     1 package Gui;
     2 
     3 import javax.swing.*;
     4 import java.awt.*;
     5 
     6 /**
     7  * author liulei
     8  * data
     9  * since 1.8
    10  * version 1.0
    11  * Description
    12  */
    13 public class Test13 extends JFrame{
    14     public static void main(String[] args) {
    15       new Test13();
    16     }
    17 
    18     public Test13() {
    19         Container container = this.getContentPane();
    20         //将一个图片变为图标;
    21         JRadioButton btn1= new JRadioButton("btn1");//单选框
    22         JRadioButton btn2= new JRadioButton("btn2");
    23         JRadioButton btn3= new JRadioButton("btn3");
    24         //单选框
    25         ButtonGroup bg= new ButtonGroup();
    26         bg.add(btn1);
    27         bg.add(btn2);
    28         bg.add(btn3);
    29         //container.add(btn1,BorderLayout.CENTER);
    30         //container.add(btn2,BorderLayout.NORTH);
    31         //container.add(btn3,BorderLayout.SOUTH);
    32 
    33         //多选框
    34         JCheckBox checkBox = new JCheckBox("checkbox1");
    35         JCheckBox checkBox1 = new JCheckBox("checkbox2");
    36         container.add(checkBox,BorderLayout.SOUTH);
    37         container.add(checkBox1,BorderLayout.NORTH);
    38 
    39 
    40         this.setSize(500,400);
    41         setVisible(true);
    42         setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    43 
    44     }
    45 }
    View Code

    文本框,密码框,文本域

     1 package Gui;
     2 
     3 import javax.swing.*;
     4 import java.awt.*;
     5 import java.net.URL;
     6 
     7 /**
     8  * author liulei
     9  * data
    10  * since 1.8
    11  * version 1.0
    12  * Description
    13  */
    14 public class Test12 extends JFrame{
    15     public Test12() {
    16         //获取图片的图标
    17         Container container = this.getContentPane();
    18         //文本域
    19         JTextArea textArea = new JTextArea(20,50);
    20         textArea.setText("欢迎你");
    21         //Scroll 面板
    22         JScrollPane sp = new JScrollPane(textArea);
    23         container.add(sp);
    24 
    25         setVisible(true);
    26         setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    27         setBounds(100,100,200,200);
    28     }
    29     public static void main(String[] args) {
    30        new Test12();
    31     }
    32 }
    View Code
     1 package Gui;
     2 
     3 import javax.swing.*;
     4 import java.awt.*;
     5 
     6 /**
     7  * author liulei
     8  * data
     9  * since 1.8
    10  * version 1.0
    11  * Description
    12  */
    13 public class Test15 extends JFrame{
    14     public static void main(String[] args) {
    15             new Test15();
    16     }
    17 
    18     public Test15() {
    19        // test1();
    20        // test2();
    21         test3();
    22     }
    23     public void test1(){
    24         Container container = this.getContentPane();
    25         JTextField textField = new JTextField("hello");
    26         JTextField textField2 = new JTextField("hello",20);
    27         container.add(textField,BorderLayout.NORTH);
    28         container.add(textField2,BorderLayout.SOUTH);
    29         this.setVisible(true);
    30         this.setSize(200,200);
    31         setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    32     }
    33     public void test2(){
    34         Container container = this.getContentPane();
    35         JPasswordField passwordField = new JPasswordField();
    36         passwordField.setEchoChar('*');
    37         container.add(passwordField);
    38 
    39         this.setVisible(true);
    40         this.setSize(200,200);
    41         setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    42     }
    43     public void test3(){
    44         Container container = this.getContentPane();
    45         JTextArea jTextArea = new JTextArea("hello",20,50);
    46         //JTextField textField2 = new JTextField("hello",20);
    47         container.add(jTextArea,BorderLayout.NORTH);
    48         //container.add(textField2,BorderLayout.SOUTH);
    49         this.setVisible(true);
    50         this.setSize(200,200);
    51         setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    52     }
    53 }
    View Code
  • 相关阅读:
    RocketMQ读书笔记3——消费者
    RocketMQ读书笔记1——简述
    02_dubbo实例_多版本号
    01_dubbo实例_服务分组
    分布式开放消息系统(RocketMQ)的原理与实践
    关于ajax的那些事
    关于html5之canvas的那些事
    关于js封装框架类库之属性操作
    关于js封装框架类库之样式操作
    关于js封装框架类库之事件模块
  • 原文地址:https://www.cnblogs.com/henuliulei/p/12994436.html
Copyright © 2011-2022 走看看