GUI学习

  1. Frame是一个顶级窗口

  2. Panel无法单独显示,必须添加在某个容器中

  3. 布局管理器

    1. 流失布局

    2. 东西南北中

    3. 表格

  4. 大小、定位、颜色、可见性、监听

 

Swing

3.1窗口和面板

package com.lei.lesson04;

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

public class JFrameDemo {
   //init();初始化
   public void init(){
       //顶级窗口
       JFrame frame = new JFrame("这是一个JFrame窗口");
       frame.setVisible(true);
       frame.setBounds(100, 100, 200, 200);
       //设置文字JLable
       JLabel label=new JLabel("欢迎学习",SwingConstants.CENTER);
       frame.add(label);
       frame.getContentPane().setBackground(Color.yellow);
       //文本标签居中
       //label.setHorizontalAlignment(SwingConstants.CENTER);
       //关闭事件
       frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }
   public static void main(String[] args) {
       //建立一个窗口
       new JFrameDemo().init();
  }
}

 

 

 


3.2弹窗

package com.lei.lesson04;

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);
       //JFrame,容器
       Container container=this.getContentPane();
       //绝对布局
       container.setLayout(null);
       //按钮
       JButton button = new JButton("点击弹出一个对话框");
       button.setBounds(30,30,200,50);
       container.add(button);
       //点击时弹出
       button.addActionListener(new ActionListener() {
           @Override
               public void actionPerformed(ActionEvent e){
                   //弹窗
               new MyDialogDemo();
          }
      });

  }

   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);
       Label label = new Label("wedwadfaef学java");
       label.setBounds(80,90,60,50);
       container.add(label);

  }
}

3.3标签

lable

 new JLable("xxx");

图标ICON

 

图片icon

 package com.lei.lesson3;
 
 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("1.jpg");
 
         ImageIcon imageIcon = new ImageIcon(url);
         label.setIcon(imageIcon);
         label.setHorizontalAlignment(SwingConstants.CENTER);
 
         Container container = getContentPane();
         container.add(label);
 
         setVisible(true);
         setDefaultCloseOperation(EXIT_ON_CLOSE);
         setBounds(100,100,100,100);
    }
 
     public static void main(String[] args) {
         new ImageIconDemo();
    }
 }
 

3.4面板

 package com.lei.lesson05;
 
 import javax.swing.*;
 import java.awt.*;
 
 public class JPanelDemo extends JFrame {
     public JPanelDemo(){
         Container container = this.getContentPane();
         //后面的参数为间距
         container.setLayout(new GridLayout(2, 1, 10, 10));
 
         JPanel jPanel = new JPanel(new GridLayout(3, 1));
         JPanel jPanel1 = new JPanel(new GridLayout(1, 2));
         JPanel jPanel2= new JPanel(new GridLayout(2, 1));
         JPanel jPanel3 = new JPanel(new GridLayout(1, 1));
 
         jPanel.add(new JButton("1"));
         jPanel.add(new JButton("1"));
         jPanel.add(new JButton("1"));
         jPanel1.add(new JButton("2"));
         jPanel1.add(new JButton("2"));
         jPanel2.add(new JButton("3"));
         jPanel2.add(new JButton("3"));
         jPanel3.add(new JButton("4"));
 
         container.add(jPanel);
         container.add(jPanel1);
         container.add(jPanel2);
         container.add(jPanel3);
         this.setVisible(true);
         this.setDefaultCloseOperation(EXIT_ON_CLOSE);
         this.setBounds(100,100,400,500);
    }
 
     public static void main(String[] args) {
         new JPanelDemo();
    }
 }
scrollpanel带滚动条的面板
 package com.lei.lesson05;
 
 import javax.swing.*;
 import java.awt.*;
 
 public class JScrollDemo extends JFrame {
     public JScrollDemo(){
         Container container = getContentPane();
 
         //文本域
         JTextArea jTextArea = new JTextArea(20,50);
         jTextArea.setText("欢迎学习GUI");
         //scroll面板
         JScrollPane jScrollPane = new JScrollPane(jTextArea);
         container.add(jScrollPane);
        // container.add(jTextArea);
         this.setVisible(true);
         this.setBounds(100,100,400,500);
    }
 
     public static void main(String[] args) {
         new JScrollDemo();
    }
 }
 

3.5按钮

图片按钮
 package com.lei.lesson05;
 
 import javax.swing.*;
 import java.awt.*;
 import java.net.URL;
 
 public class JButtonDemo extends JFrame {
     public JButtonDemo(){
         Container container = getContentPane();
         //将图片变成图标
         URL url = JButtonDemo.class.getResource("1.jpg");
         Icon icon = new ImageIcon(url);
 
         //把图标放在按钮上
         JButton jButton = new JButton();
         jButton.setIcon(icon);
         jButton.setToolTipText("图片按钮");
         container.add(jButton);
 
         this.setVisible(true);
         this.setBounds(100,100,500,400);
    }
 
     public static void main(String[] args) {
         new JButtonDemo();
    }
 }
 
单选按钮
 package com.lei.lesson05;
 import javax.swing.*;
 import java.awt.*;
 import java.net.URL;
 
 public class JButtonDemo01 extends JFrame {
     public JButtonDemo01(){
         Container container = getContentPane();
 
        //单选框
         JRadioButton jRadioButton1 = new JRadioButton("jRadioButton1");
         JRadioButton jRadioButton2 = new JRadioButton("jRadioButton2");
         JRadioButton jRadioButton3 = new JRadioButton("jRadioButton3");
         //单选框只能选择一个,所以分组,一个组中只能选择一个
         ButtonGroup buttonGroup = new ButtonGroup();
         buttonGroup.add(jRadioButton1);
         buttonGroup.add(jRadioButton2);
         buttonGroup.add(jRadioButton3);
 
         container.add(jRadioButton1,BorderLayout.CENTER);
         container.add(jRadioButton2,BorderLayout.NORTH);
         container.add(jRadioButton3,BorderLayout.SOUTH);
 
         this.setVisible(true);
         this.setBounds(100,100,500,400);
    }
 
     public static void main(String[] args) {
         new JButtonDemo01();
    }
 }
 
复选按钮
 package com.lei.lesson05;
 import javax.swing.*;
 import java.awt.*;
 import java.net.URL;
 
 public class JButtonDemo02 extends JFrame {
     public JButtonDemo02(){
         Container container = getContentPane();
         //多选框
         JCheckBox jCheckBox1 = new JCheckBox("jCheckBox1");
         JCheckBox jCheckBox2 = new JCheckBox("jCheckBox2");
         JCheckBox jCheckBox3 = new JCheckBox("jCheckBox3");
 
         container.add(jCheckBox1,BorderLayout.CENTER);
         container.add(jCheckBox2,BorderLayout.NORTH);
         container.add(jCheckBox3,BorderLayout.SOUTH);
         this.setVisible(true);
         this.setBounds(100,100,500,400);
    }
 
     public static void main(String[] args) {
         new JButtonDemo02();
    }
 }
 

3.6列表

下拉框

 package com.lei.lesson06;
 
 import javax.swing.*;
 import java.awt.*;
 
 public class ComboboxDemo extends JFrame {
     public ComboboxDemo(){
         Container container = getContentPane();
         JComboBox jComboBox = new JComboBox();
 
         jComboBox.addItem(null);
         jComboBox.addItem("正在热映");
         jComboBox.addItem("已下架");
         jComboBox.addItem("即将上映");
 
         container.add(jComboBox);
 
         this.setVisible(true);
         this.setSize(300,400);
    }
 
     public static void main(String[] args) {
         new ComboboxDemo();
    }
 }
 

列表框

 package com.lei.lesson06;
 
 import javax.swing.*;
 import java.awt.*;
 
 public class ComboBoxDemo01 extends JFrame {
     public ComboBoxDemo01(){
         Container container = getContentPane();
         //生成列表的内容
         String[] contents={"1","2","3"};
         JList jList = new JList(contents);
         container.add(jList);
         this.setVisible(true);
         this.setSize(300,400);
    }
 
     public static void main(String[] args) {
         new ComboBoxDemo01();
    }
 }
 
 

应用场景


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

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

文本框

文本框

 package com.lei.lesson06;
 
 import javax.swing.*;
 import java.awt.*;
 
 public class TextDemo extends JFrame {
     public TextDemo() throws HeadlessException {
         Container container = getContentPane();
         JTextField jTextField = new JTextField("world");
         JTextField jTextField1 = new JTextField("world1",20);
 
         container.add(jTextField,BorderLayout.SOUTH);
         container.add(jTextField1,BorderLayout.NORTH);
 
         this.setVisible(true);
         this.setSize(400,400);
    }
 
     public static void main(String[] args) {
         new TextDemo();
    }
 }
 

密码框

 package com.lei.lesson06;
 
 import javax.swing.*;
 import java.awt.*;
 
 public class TextDemo02 extends JFrame {
     public TextDemo02() throws HeadlessException {
         Container container = getContentPane();
         JPasswordField jPasswordField = new JPasswordField();
         jPasswordField.setEchoChar('*');
         container.add(jPasswordField);
         this.setVisible(true);
         this.setSize(400,400);
    }
 
     public static void main(String[] args) {
         new TextDemo02();
    }
 }
 
  • 文本域

    JTextArea







posted @ 2022-01-17 14:15  Eveeee  阅读(83)  评论(0)    收藏  举报