GUI编程

GUI编程

组件

  • 窗口

  • 弹窗

  • 面板

  • 文本框

  • 列表框

  • 按钮

  • 图片

  • 监听事件

  • 键盘事件

  • 鼠标事件

  • 破解工具

1.简介

Gui的核心技术:Swing、AWT

1.因为界面不美观

2.需要jre环境

为什么我们要学习?

  1. 可以写出一些自己想要的小工具

  2. 工作时候,也可能需要维护到Swing界面,概率极小!

  3. 了解MVC架构,了解监听

2.AWT

2.1、AWT介绍

  1. 包含了很多类和接口!GUI!

  2. 元素:窗口,按钮,文本框

  3. java.awt

2.2、组件和容器

1. Frame

package lesson1;

import java.awt.*;

//GUI的第一个界面
public class TestFrame {
   public static void main(String[] args) {

       //Frame
       Frame frame = new Frame("我的第一个Java图像界面窗口");

       //需要设置可见性
       frame.setVisible(true);

       //设置窗口大小
       frame.setSize(400,400);
       //设置背景颜色
       frame.setBackground(Color.white);
       //弹出的初始位置
       frame.setLocation(900,450);
       //设置大小固定
       frame.setResizable(false);

  }
}

image-20210928160816480

封装

package lesson1;

import java.awt.*;

public class TestFrame2 {
   public static void main(String[] args) {
       new MyFrame(100,100,200,200, Color.WHITE);
       new MyFrame(300,100,200,200, Color.BLACK);
       new MyFrame(100,300,200,200, Color.YELLOW);
       new MyFrame(300,300,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);
       setBounds(x,y,w,h);
       setVisible(true);
  }
}

image-20210928160912133

2. 面板Panel

package lesson1;

//Panel 可以看成一个空间,但是不能单独存在

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class TestPanel {
   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(Color.white);
       //Panel设置坐标,相对于Frame
       panel.setBounds(50,50,400,400);
       panel.setBackground(Color.red);
       //将Panel添加到Frame
       frame.add(panel);

       frame.setVisible(true);

       //监听事件,监听窗口关闭事件 System.exit(0)
       //适配器模式
       frame.addWindowListener(new WindowAdapter() {
           //窗口点击关闭的时候需要做的事情
           @Override
           public void windowClosing(WindowEvent e) {
               //结束程序
               System.exit(0);
          }
      });
  }
}

image-20210928163306645

2.3、布局管理器

  • 流式布局(默认)

package lesson1;

import java.awt.*;

public class TestFlowLayout {
   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.setSize(200,200);

       frame.setVisible(true);

       frame.add(button1);
       frame.add(button2);
       frame.add(button3);
  }
}

image-20210928164235810

  • 东西南北中

package lesson1;

import java.awt.*;

public class TestBorderLayout {
   public static void main(String[] args) {
       Frame frame = new Frame();
       Button button1 = new Button("East");
       Button button2 = new Button("West");
       Button button3 = new Button("South");
       Button button4 = new Button("North");
       Button button5 = new Button("Center");

       frame.add(button1,BorderLayout.EAST);
       frame.add(button2,BorderLayout.WEST);
       frame.add(button3,BorderLayout.SOUTH);
       frame.add(button4,BorderLayout.NORTH);
       frame.add(button5,BorderLayout.CENTER);
       frame.setSize(300,300);
       frame.setVisible(true);
  }
}

image-20210928165111977

  • 表格布局

package lesson1;

import java.awt.*;

public class TestGirdLayout {
   public static void main(String[] args) {
       Frame frame = new Frame();
       Button b1 = new Button("b1");
       Button b2 = new Button("b2");
       Button b3 = new Button("b3");
       Button b4 = new Button("b4");
       Button b5 = new Button("b5");
       Button b6 = new Button("b6");
       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.setSize(400,400);
       frame.setVisible(true);
  }
}

image-20210928165644533

练习
我的做法
package lesson1;
//练习

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();

       frame.add(new MyButton(200,400,0,0));
       frame.add(new MyButton(200,400,0,400));
       frame.add(new MyButton(400,200,200,0));
       frame.add(new MyButton(400,200,200,200));
       frame.add(new MyButton(200,400));
       frame.add(new MyButton(400,400));
       frame.add(new MyButton(200,600));
       frame.add(new MyButton(400,600));
       frame.add(new MyButton(200,400,600,0));
       frame.add(new MyButton(200,400,600,400));

       frame.setSize(800,800);
       frame.setLayout(null);
       frame.setBackground(Color.white);
       frame.setVisible(true);
       frame.setResizable(false);
       frame.addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               System.exit(0);
          }
      });
  }
}
class MyButton extends Button{
   static int id =0;
   public MyButton(int x,int y){
       super("b"+(++id));
       setSize(200,200);
       setLocation(x,y);
  }
   public MyButton(int w,int h,int x,int y){
       super("b"+(++id));
       setSize(w,h);
       setLocation(x,y);
  }
}

image-20210928193557274

视频中的做法
package lesson1;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class TestPro {
   public static void main(String[] args) {
       Frame frame = new Frame();
       Panel panel1 = new Panel(new BorderLayout());
       Panel panel2 = new Panel(new GridLayout(2,1));
       Panel panel3 = new Panel(new BorderLayout());
       Panel panel4 = new Panel(new GridLayout(2,2));

       panel1.add(new Button("East1"),BorderLayout.EAST);
       panel1.add(new Button("West1"),BorderLayout.WEST);
       panel2.add(new Button("p2-btn-1"));
       panel2.add(new Button("p2-btn-2"));
       panel1.add(panel2,BorderLayout.CENTER);


       panel3.add(new Button("East2"),BorderLayout.EAST);
       for (int i = 0; i < 4; i++) {
           panel4.add(new Button("p4-btn-"+(i+1)));
      }
       panel3.add(new Button("West2"),BorderLayout.WEST);
       panel3.add(panel4,BorderLayout.CENTER);

       frame.add(panel1);
       frame.add(panel3);
       frame.setVisible(true);
       frame.setLayout(new GridLayout(2,1));
       frame.setSize(800,800);
       frame.addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               System.exit(0);
          }
      });
  }
}

image-20210928193653733

对比总结

我没有考虑容器panel的分层嵌套使用

想的是用location和size 将button的位置和大小固定 然后直接添加到Frame

考虑欠佳,但是按钮大小比较统一,下次加入容器的思想

 

2.4、事件监听

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

package lesson2;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class TestActionEvent {
   public static void main(String[] args) {
       //按下按钮,触发一些事件
       Frame frame = new Frame();

       Button button = new Button("你好");
       button.addActionListener(new MyActionListener());
       frame.add(button,BorderLayout.CENTER);
       frame.setVisible(true);
       frame.setSize(300,300);
       WindowClose(frame);
  }
   public 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) {
       System.out.println("你好呀!");
  }
}

image-20210928195855589

多个按钮只写一个监听类
package lesson2;
//实现2个按钮只写同一个监听类
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class TestActionEventTwo {
   public static void main(String[] args) {
       Frame frame = new Frame("开始-停止");
       Button button1 = new Button("start");
       Button button2 = new Button("stop");
       button1.setActionCommand("start");
       button2.setActionCommand("stop");
       button1.addActionListener(new MyMonitor());
       button2.addActionListener(new MyMonitor());
       frame.add(button1,BorderLayout.NORTH);
       frame.add(button2,BorderLayout.SOUTH);
       frame.setSize(300,300);
       frame.setVisible(true);
       frame.addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               System.exit(0);
          }
      });
  }
}
class MyMonitor implements ActionListener{
   @Override
   public void actionPerformed(ActionEvent e) {
       if(e.getActionCommand().equals("start")){
           System.out.println("start");
      }else if (e.getActionCommand().equals("stop")){
           System.out.println("stop");
      }
  }
}

image-20210928201723507

2.5、输入框TextField监听

package lesson2;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class TestText1 {
   public static void main(String[] args) {
           new MyFrame();
  }
}
class MyFrame extends Frame{
   public MyFrame(){
       TextField textField = new TextField();
       add(textField);
       //监听这个文本框输入的文字
       MyActionListener2 myActionListener2 = new MyActionListener2();
       //按下enter就会触发这个输入框的事件
       textField.addActionListener(myActionListener2);
       //设置替换编码
       textField.setEchoChar('*');//保证安全性
       pack();
       setVisible(true);
       setSize(800,800);
       addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               System.exit(0);
          }
      });
  }
}
class MyActionListener2 implements ActionListener{
   @Override
   public void actionPerformed(ActionEvent e) {
       TextField field = (TextField) e.getSource();//获得一些资源,返回了一个对象
       System.out.println(field.getText());//获得输入框中的文本
       field.setText("");//按下一次回车,就清除一次内容
  }
}

image-20210929154516944

2.6、简易计算器,组合+内部类回顾复习

oop原则:组合 大于 继承!

组合思想
class A extends B{
   
}

class A{
   public B b;
}
package lesson2;

import javax.swing.*;
import javax.xml.soap.Text;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

//简易计算器
public class TextCalc {
   public static void main(String[] args) {
        new Calculator().loadFrame();
  }
}
//计算器类
class Calculator extends Frame{
   //属性
   TextField  num1,num2,num3;
   //方法
   public void loadFrame(){
           //3个文本框
        num1 = new TextField(10);//字符数
        num2 = new TextField(10);//字符数
        num3 = new TextField(20);//字符数
           //1个按钮
       Button button = new Button("=");
       button.addActionListener(new MyCalculatorActionLisenter(this));
           //一个标签
       Label label = new Label("+");
           //布局
       add(num1);
       add(label);
       add(num2);
       add(button);
       add(num3);
       setLayout(new FlowLayout());
       setVisible(true);
       setSize(800,400);
       pack();
       addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               System.exit(0);
          }
      });
  }
}
//监听器类
class MyCalculatorActionLisenter implements ActionListener{
   //获取计算器这个对象
   Calculator calculator =null;//组合思想
   public MyCalculatorActionLisenter(Calculator calculator){
       this.calculator=calculator;
  }
   public void actionPerformed(ActionEvent e) {
       int n1=Integer.parseInt(calculator.num1.getText());
       int n2=Integer.parseInt(calculator.num2.getText());
       calculator.num3.setText(""+(n1+n2));
       calculator.num1.setText("");
       calculator.num2.setText("");
  }
}
内部类 更好的包装
package lesson2;

import javax.swing.*;
import javax.xml.soap.Text;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

//简易计算器
public class TextCalc {
   public static void main(String[] args) {
        new Calculator().loadFrame();
  }
}
//计算器类
class Calculator extends Frame{
   //属性
   TextField  num1,num2,num3;
   //方法
   public void loadFrame(){
           //3个文本框
        num1 = new TextField(10);//字符数
        num2 = new TextField(10);//字符数
        num3 = new TextField(20);//字符数
           //1个按钮
       Button button = new Button("=");
       button.addActionListener(new MyCalculatorActionLisenter());
           //一个标签
       Label label = new Label("+");
           //布局
       add(num1);
       add(label);
       add(num2);
       add(button);
       add(num3);
       setLayout(new FlowLayout());
       setVisible(true);
       setSize(800,400);
       pack();
       addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               System.exit(0);
          }
      });
  }
   //监听器类
   //内部类最大的好处,就是可以畅通无阻的访问外部的属性。
   class MyCalculatorActionLisenter implements ActionListener{

       public void actionPerformed(ActionEvent e) {
           int n1=Integer.parseInt(num1.getText());
           int n2=Integer.parseInt(num2.getText());
           num3.setText(""+(n1+n2));
           num1.setText("");
           num2.setText("");
      }
  }
}

image-20210929171408992

按下 =

image-20210929171432442

2.7、画笔paint

package lesson3;

import javafx.scene.paint.Paint;
import org.w3c.dom.ls.LSOutput;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class TestPaint {
   public static void main(String[] args) {
           new MyPaint().loadFrame();
  }
}
class MyPaint extends Frame{
   public void loadFrame(){
       setBounds(400,400,600,500);
       setVisible(true);
       addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               System.exit(0);
          }
      });
  }
   @Override
   //画笔
   public void paint(Graphics g) {
       //画笔,需要有颜色,可以画画
       g.setColor(Color.red);
       g.drawOval(100,100,100,100);
       g.setColor(Color.green);
       g.fillRect(150,200,100,100);

       //养成习惯,画笔用完,将他还原到最初的颜色。
  }
}

2.8、鼠标监听

目标:想要实现鼠标画画!

package lesson3;

import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.Iterator;

//鼠标监听事件
public class TestMouseListener {
   public static void main(String[] args) {
           new MyFrame("画图");
  }
}
//自己的类
class MyFrame extends Frame{
   //画画需要画笔,需要监听鼠标当前的位置,需要集合来存储这个点
   ArrayList points;
   public MyFrame(String title){
       super(title);
       setBounds(400,400,600,500);
       setVisible(true);
       //存鼠标点击的点
       points =new ArrayList<>();
       //鼠标监听器,针对这个窗口
       this.addMouseListener(new MyMouseListener());
       addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               System.exit(0);
          }
      });
  }
   @Override
   public 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 addPoint(Point point){
       points.add(point);
  }

   private class MyMouseListener extends MouseAdapter {
       //鼠标 按下,弹起,按住不放

       @Override
       public void mousePressed(MouseEvent e) {
          MyFrame myFrame= (MyFrame) e.getSource();
          //这里我们点击的时候就会在界面上产生一个点!画
           //这个点就是鼠标的点
           myFrame.addPoint(new Point(e.getX(),e.getY()));

           //每次点击鼠标都需要重新画一遍
           myFrame.repaint();//刷新
      }
  }
}

2.9、窗口监听

package lesson3;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class TestWindow {
   public static void main(String[] args) {
           new WindowFrame();
  }
}
class WindowFrame extends Frame{
   public WindowFrame(){
           setBackground(Color.blue);
           setBounds(100,100,600,600);
           setVisible(true);
           this.addWindowListener(
                   //匿名内部类
                   new WindowAdapter() {
               @Override
               public void windowClosing(WindowEvent e) {
                   System.exit(0);
              }
          });
  }
}

2.10、键盘监听

package lesson3;

import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class TestKeyListener {
   public static void main(String[] args) {
       new MyKeyFrame();
  }
}
class MyKeyFrame extends Frame{
   public MyKeyFrame(){
           setBounds(1,2,300,400);
           setVisible(true);
           this.addKeyListener(new KeyAdapter() {
               @Override
               public void keyPressed(KeyEvent e) {
                   //键盘按下
                   //获取当前键盘的码
                   int keyCode = e.getKeyCode();//不需要去记录这个数值,直接使用静态属性 KV_XXX
                   System.out.println(keyCode);
                   if(keyCode==KeyEvent.VK_UP){
                       System.out.println("你按了一下UP键");
                  }
                   //根据不同操作,产生不同结果
              }
          });
  }
}

3.Swint

3.1 窗口、面板

 

package lesson4;

import javax.swing.*;
import java.awt.*;

public class JFrameDemo {
   //init 初始化
   public void init(){
       //顶级窗口
       JFrame jf = new JFrame("这是一个JFrame窗口");
       jf.setVisible(true);
       jf.setBounds(100,100,600,600);
       //设置文字 Jlabel
       JLabel label = new JLabel("欢迎");
       jf.add(label);
       //关闭事件
       jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }
   public static void main(String[] args) {
       //建立一个新的窗口
       new JFrameDemo().init();
  }
}
package lesson4;

import javax.swing.*;
import java.awt.*;

public class JFrameDemo02 {
   public static void main(String[] args) {
       new MyJFrame2().init();
  }
}
class MyJFrame2 extends JFrame{
   public void init(){
       setBounds(100,100,600,600);
       setVisible(true);

       JLabel jLabel = new JLabel("欢迎打开这个界面");
       add(jLabel);
       //让文本标签居中,设置水平对齐
       jLabel.setHorizontalAlignment(SwingConstants.CENTER);
       //容器实例化
       Container contentPane = this.getContentPane();
       contentPane.setBackground(Color.cyan);
       //关闭事件
       setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }
}

3.2 弹窗

package lesson4;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

//主窗口
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() {
           @Override
           public 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 container =this.getContentPane();
       container.setLayout(null);
       container.add(new Label("贪贪贪贪床"));

  }
}

3.3 标签

label

1 new JLabel("xxx");

图标 ICON

package lesson4;

import javax.swing.*;
import java.awt.*;

//图标是一个接口,需要实现类,Frame继承
public class IconDemo extends JFrame implements Icon {
   private int width;
   private int height;
   public IconDemo(){}//无参构造
   public IconDemo(int width,int height){
       this.width=width;
       this.height=height;
  }
   public void init(){
       IconDemo iconDemo = new IconDemo(15,15);
       //图标放在标签,也可以放在按钮上
       JLabel jLabel = new JLabel("IconTest",iconDemo,SwingConstants.CENTER);

       Container contentPane = getContentPane();
       contentPane.add(jLabel);
       this.setVisible(true);
       this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }
   public static void main(String[] args) {
           new IconDemo().init();
  }

   @Override
   public void paintIcon(Component c, Graphics g, int x, int y) {
           g.fillOval(x,y,width,height);
  }

   @Override
   public int getIconWidth() {
       return this.width;
  }

   @Override
   public int getIconHeight() {
       return this.height;
  }
}
package lesson4;

import javax.swing.*;
import java.awt.*;
import java.net.URL;

public class ImageIconDemo extends JFrame {
   public ImageIconDemo() {
       //获取图片的地址
       JLabel label =new JLabel("ImageIcon");
       URL url = ImageIconDemo.class.getResource("tx.jpg");
       ImageIcon imageIcon = new ImageIcon(url);//命名不要冲突
       label.setIcon(imageIcon);
       label.setHorizontalAlignment(SwingConstants.CENTER);
       Container contentPane = getContentPane();
       contentPane.add(label);
       setVisible(true);
       setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
       setBounds(100,100,300,300);
  }

   public static void main(String[] args) {
        new ImageIconDemo();
  }
}

3.4 面板

JPanel

package lesson5;

import javax.swing.*;
import java.awt.*;

public class TestJPanel extends JFrame {
   public TestJPanel(){
       Container contentPane = this.getContentPane();
       contentPane.setLayout(new GridLayout(1,2,10,10));//后面的参数的意思是间距
       JPanel jPanel = new JPanel(new GridLayout(1,3));

       jPanel.add(new JButton("1`"));
       jPanel.add(new JButton("1`"));
       jPanel.add(new JButton("1`"));
       contentPane.add(jPanel);
       this.setVisible(true);
       this.setSize(500,500);
       this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }

   public static void main(String[] args) {
       new TestJPanel();
  }
}

3.5 按钮

  • 单选按钮

package lesson5;

import javax.swing.*;
import java.awt.*;

public class JButtonDemo extends JFrame {
   public JButtonDemo() {
       Container container = getContentPane();
       //单选框
       JRadioButton jRadioButton01 = new JRadioButton("JRadioButton01");
       JRadioButton jRadioButton02 = new JRadioButton("JRadioButton02");
       JRadioButton jRadioButton03 = new JRadioButton("JRadioButton03");
       //由于单选框只能选择一个,分组,一个组中只能选择一个
       ButtonGroup buttonGroup = new ButtonGroup();
       buttonGroup.add(jRadioButton01);
       buttonGroup.add(jRadioButton02);
       buttonGroup.add(jRadioButton03);
       container.add(jRadioButton01,BorderLayout.NORTH);
       container.add(jRadioButton02,BorderLayout.CENTER);
       container.add(jRadioButton03,BorderLayout.SOUTH);
       this.setVisible(true);
       this.setSize(500,500);
       this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }
   public static void main(String[] args) {
       new JButtonDemo();
  }
}
  • ‘复选按钮

package lesson5;

import javax.swing.*;
import java.awt.*;

public class JButtonDemo1 extends JFrame{
   public JButtonDemo1() {
       Container container =getContentPane();

       //复选框
       JCheckBox checkBox01 = new JCheckBox("checkBox01");
       JCheckBox checkBox02 = new JCheckBox("checkBox02");
       JCheckBox checkBox03 = new JCheckBox("checkBox03");
       container.add(checkBox01,BorderLayout.NORTH);
       container.add(checkBox02,BorderLayout.CENTER);
       container.add(checkBox03,BorderLayout.SOUTH);
       this.setVisible(true);
       this.setSize(500,500);
       this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }
   public static void main(String[] args) {
       new JButtonDemo1();
  }
}

3.6 列表

  • 下拉框

package lesson5;

import javax.swing.*;
import java.awt.*;

public class TestComboboxDemo01 extends JFrame {
   public TestComboboxDemo01(){
       Container container = this.getContentPane();
       JComboBox status = new JComboBox();
       status.addItem(null);
       status.addItem("正在热映");
       status.addItem("已下架");
       status.addItem("即将上映");
       container.add(status);
       this.setVisible(true);
       this.setSize(500,500);
       this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }

   public static void main(String[] args) {
       new TestComboboxDemo01();
  }
}
  • 列表框

package lesson5;

import javax.swing.*;
import java.awt.*;
import java.util.Vector;

public class TestComboboxDemo02 extends JFrame {
   public TestComboboxDemo02() {
       Container container = this.getContentPane();

//       //生成列表的内容
//       String[] contents = {"1","2","3"};
       Vector contents = new Vector();//动态添加
       contents.add("zhangsan");
       contents.add("lisi");
       contents.add("wangwu");
       //列表中需要放入内容
      JList jList = new JList(contents);
       
       container.add(jList);
       this.setVisible(true);
       this.setBounds(500,500,300,300);
       this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }

   public static void main(String[] args) {
       new TestComboboxDemo02();
  }
}
  • 应用场景

    • 选择地区,或者一些单个选项

    • 列表,展示信息,一般是动态扩容

3.7 文本框

  • 文本框

package lesson6;

import javax.swing.*;
import java.awt.*;

public class TestTextDemo01 extends JFrame {
   public TestTextDemo01(){
       Container container = this.getContentPane();

       JTextField jTextField = new JTextField("Hello");
       JTextField jTextField2 = new JTextField("World",20);

       container.add(jTextField,BorderLayout.NORTH);
       container.add(jTextField2,BorderLayout.SOUTH);

       this.setVisible(true);
       this.setBounds(500,500,100,100);
       this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
  }

   public static void main(String[] args) {
       new TestTextDemo01();
  }
}
  • 密码框

package lesson6;

import javax.swing.*;
import java.awt.*;

public class TestTextDemo02 extends JFrame {
   public TestTextDemo02() {
       Container container = this.getContentPane();

       JPasswordField jPasswordField = new JPasswordField();//***
       jPasswordField.setEchoChar('*');

       container.add(jPasswordField);

       this.setVisible(true);
       this.setBounds(500,500,300,300);
       this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }

   public static void main(String[] args) {
       new TestTextDemo02();
  }
}
  • 文本域

    new JTextArea();

     

  •  

posted @ 2021-10-12 21:50  阿林学习笔记  阅读(39)  评论(0)    收藏  举报