zoukankan      html  css  js  c++  java
  • 图形界面系列教材 (五)- Swing 中的组件列表

    JAVA的图形界面下有两组控件,一组是awt,一组是swing。 
    一般都是使用swing

    步骤1:标签
    步骤2:使用JLabel显示图片
    步骤3:按钮
    步骤4:复选框
    步骤5:单选框
    步骤6:按钮组
    步骤7:下拉框
    步骤8:对话框
    步骤9:文本框
    步骤10:密码框
    步骤11:文本域
    步骤12:进度条
    步骤13:文件选择器

    示例 1 : 标签

    Label用于显示文字

    标签

    package gui;

      

    import java.awt.Color;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

      

    public class TestGUI {

        public static void main(String[] args) {

              

            JFrame f = new JFrame("LoL");

            f.setSize(400300);

            f.setLocation(200200);

            f.setLayout(null);

            JLabel l = new JLabel("LOL文字");

            //文字颜色

            l.setForeground(Color.red);

            l.setBounds(505028030);

      

            f.add(l);

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      

            f.setVisible(true);

        }

    }

    示例 2 : 使用JLabel显示图片

    java GUI 显示图片是通过在label上设置图标实现的
    注: 这里的图片路径是e:/project/j2se/shana.png,所以要确保这里有图片,不然不会显示
    注: 图片的后缀名和真实格式,必须保持一致,否则很有可能无法正常显示。 什么意思呢?就是文件本来是jpg的,但是仅仅是把后缀名修改成了png,那么会导致显示失败。

    使用JLabel显示图片

    package gui;

    import javax.swing.ImageIcon;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    public class TestGUI {

        public static void main(String[] args) {

            JFrame f = new JFrame("LoL");

            f.setSize(400300);

            f.setLocation(580200);

            f.setLayout(null);

            JLabel l = new JLabel();

            //根据图片创建ImageIcon对象

            ImageIcon i = new ImageIcon("e:/project/j2se/shana.png");

            //设置ImageIcon

            l.setIcon(i);

            //label的大小设置为ImageIcon,否则显示不完整

            l.setBounds(5050, i.getIconWidth(), i.getIconHeight());

            f.add(l);

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            f.setVisible(true);

        }

    }

    示例 3 : 按钮

    JButton 普通按钮

    按钮

    package gui;

      

    import javax.swing.JButton;

    import javax.swing.JFrame;

      

    public class TestGUI {

        public static void main(String[] args) {

              

            JFrame f = new JFrame("LoL");

            f.setSize(400300);

            f.setLocation(200200);

            f.setLayout(null);

            JButton b = new JButton("一键秒对方基地挂");

            b.setBounds(505028030);

      

            f.add(b);

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      

            f.setVisible(true);

        }

    }

    示例 4 : 复选框

    JCheckBox 复选框

    使用isSelected来获取是否选中了

    复选框

    package gui;

    import javax.swing.JCheckBox;

    import javax.swing.JFrame;

    public class TestGUI {

        public static void main(String[] args) {

            JFrame f = new JFrame("LoL");

            f.setSize(400300);

            f.setLocation(580200);

            f.setLayout(null);

            JCheckBox bCheckBox = new JCheckBox("物理英雄");

            //设置 为 默认被选中 

            bCheckBox.setSelected(true);

            bCheckBox.setBounds(505013030);

            JCheckBox bCheckBox2 = new JCheckBox("魔法 英雄");

            bCheckBox2.setBounds(5010013030);

            //判断 是否 被 选中 

            System.out.println(bCheckBox2.isSelected());

            f.add(bCheckBox);

            f.add(bCheckBox2);

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            f.setVisible(true);

        }

    }

    示例 5 : 单选框

    JRadioButton 单选框
    使用isSelected来获取是否选中了 

    在这个例子里,两个单选框可以被同时选中,为了实现只能选中一个,还需要用到ButtonGroup

    单选框

    package gui;

    import javax.swing.JCheckBox;

    import javax.swing.JFrame;

    import javax.swing.JRadioButton;

    public class TestGUI {

        public static void main(String[] args) {

            JFrame f = new JFrame("LoL");

            f.setSize(400300);

            f.setLocation(580200);

            f.setLayout(null);

            JRadioButton b1 = new JRadioButton("物理英雄");

            // 设置 为 默认被选中

            b1.setSelected(true);

            b1.setBounds(505013030);

            JRadioButton b2 = new JRadioButton("魔法 英雄");

            b2.setBounds(5010013030);

            System.out.println(b2.isSelected());

            f.add(b1);

            f.add(b2);

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            f.setVisible(true);

        }

    }

    示例 6 : 按钮组

    ButtonGroup 对按钮进行分组,把不同的按钮,放在同一个分组里 ,同一时间,只有一个 按钮 会被选中

    按钮组

    package gui;

    import javax.swing.ButtonGroup;

    import javax.swing.JFrame;

    import javax.swing.JRadioButton;

    public class TestGUI {

        public static void main(String[] args) {

            JFrame f = new JFrame("LoL");

            f.setSize(400300);

            f.setLocation(580240);

            f.setLayout(null);

            JRadioButton b1 = new JRadioButton("物理英雄");

            b1.setSelected(true);

            b1.setBounds(505013030);

            JRadioButton b2 = new JRadioButton("魔法 英雄");

            b2.setBounds(5010013030);

            // 按钮分组

            ButtonGroup bg = new ButtonGroup();

            // 把b1,b2放在 同一个 按钮分组对象里 ,这样同一时间,只有一个 按钮 会被选中

            bg.add(b1);

            bg.add(b2);

            f.add(b1);

            f.add(b2);

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            f.setVisible(true);

        }

    }

    示例 7 : 下拉框

    JComboBox 下拉框
    使用getSelectedItem来获取被选中项
    使用setSelectedItem() 来指定要选中项

    下拉框

    package gui;

    import javax.swing.JComboBox;

    import javax.swing.JFrame;

    public class TestGUI {

        public static void main(String[] args) {

            JFrame f = new JFrame("LoL");

            f.setSize(400300);

            f.setLocation(580240);

            f.setLayout(null);

            //下拉框出现的条目

            String[] heros = new String[] { "卡特琳娜""库奇" };

            JComboBox cb = new JComboBox(heros);

            cb.setBounds(50508030);

            f.add(cb);

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            f.setVisible(true);

        }

    }

    示例 8 : 对话框

    JOptionPane 用于弹出对话框

    JOptionPane.showConfirmDialog(f, "是否 使用外挂 ?");
    表示询问,第一个参数是该对话框以哪个组件对齐
    JOptionPane.showInputDialog(f, "请输入yes,表明使用外挂后果自负");
    接受用户的输入
    JOptionPane.showMessageDialog(f, "你使用外挂被抓住! 罚拣肥皂3次!");
    显示消息

    对话框

    package gui;

    import javax.swing.JFrame;

    import javax.swing.JOptionPane;

    public class TestGUI {

        public static void main(String[] args) {

            JFrame f = new JFrame("LoL");

            f.setSize(400300);

            f.setLocation(580240);

            f.setLayout(null);

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            f.setVisible(true);

            int option = JOptionPane.showConfirmDialog(f, "是否 使用外挂 ?");

            if (JOptionPane.OK_OPTION == option) {

                String answer = JOptionPane.showInputDialog(f, "请输入yes,表明使用外挂后果自负");

                if ("yes".equals(answer))

                    JOptionPane.showMessageDialog(f, "你使用外挂被抓住! 罚拣肥皂3次!");

            }

        }

    }

    示例 9 : 文本框

    JTextField 输入框
    setText 设置文本
    getText 获取文本
    JTextField 是单行文本框,如果要输入多行数据,请使用JTextArea

    tfPassword.grabFocus(); 表示让密码输入框获取焦点

    文本框

    package gui;

    import java.awt.Dimension;

    import java.awt.FlowLayout;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JTextField;

    public class TestGUI {

        public static void main(String[] args) {

            JFrame f = new JFrame("LoL");

            f.setSize(400300);

            f.setLocation(200200);

            f.setLayout(new FlowLayout());

            JLabel lName = new JLabel("账号:");

            // 输入框

            JTextField tfName = new JTextField("");

            tfName.setText("请输入账号");

            tfName.setPreferredSize(new Dimension(8030));

            JLabel lPassword = new JLabel("密码:");

            // 输入框

            JTextField tfPassword = new JTextField("");

            tfPassword.setText("请输入密码");

            tfPassword.setPreferredSize(new Dimension(8030));

            f.add(lName);

            f.add(tfName);

            f.add(lPassword);

            f.add(tfPassword);

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            f.setVisible(true);

            tfPassword.grabFocus();

        }

    }

    示例 10 : 密码框

    JPasswordField 密码框 
    与文本框不同,获取密码框里的内容,推荐使用getPassword,该方法会返回一个字符数组,而非字符串

    密码框

    package gui;

    import java.awt.Dimension;

    import java.awt.FlowLayout;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JPasswordField;

    public class TestGUI {

        public static void main(String[] args) {

            JFrame f = new JFrame("LoL");

            f.setSize(400300);

            f.setLocation(200200);

            f.setLayout(new FlowLayout());

            JLabel l = new JLabel("密码:");

            // 密码框

            JPasswordField pf = new JPasswordField("");

            pf.setText("&48kdh4@#");

            pf.setPreferredSize(new Dimension(8030));

            // 与文本框不同,获取密码框里的内容,推荐使用getPassword,该方法会返回一个字符数组,而非字符串

            char[] password = pf.getPassword();

            String p = String.valueOf(password);

            System.out.println(p);

            f.add(l);

            f.add(pf);

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            f.setVisible(true);

        }

    }

    示例 11 : 文本域

    JTextArea:文本域。
    文本框JTextField不同的是,文本域可以输入多行数据
    如果要给文本域初始文本,通过 来实现换行效果
    JTextArea通常会用到append来进行数据追加
    如果文本太长,会跑出去,可以通过setLineWrap(true) 来做到自动换行

    文本域

    package gui;

      

    import java.awt.Dimension;

    import java.awt.FlowLayout;

      

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JTextArea;

      

    public class TestGUI {

        public static void main(String[] args) {

      

            JFrame f = new JFrame("LoL");

            f.setSize(400300);

            f.setLocation(200200);

      

            f.setLayout(new FlowLayout());

      

            JLabel l = new JLabel("文本域:");

      

            JTextArea ta = new JTextArea();

            ta.setPreferredSize(new Dimension(200150));

            // 换行符

            ta.setText("抢人头! 抢你妹啊抢! ");

            //追加数据

            ta.append("我去送了了了了了了了了了了了了了了了了了了了了了了了了");

            //设置自动换行

            ta.setLineWrap(true);

            f.add(l);

            f.add(ta);

      

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      

            f.setVisible(true);

        }

    }

    示例 12 : 进度条

    进度条

    package gui;

    import java.awt.Dimension;

    import java.awt.FlowLayout;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JProgressBar;

    import javax.swing.JTextArea;

    public class TestGUI {

        public static void main(String[] args) {

            JFrame f = new JFrame("LoL");

            f.setSize(400300);

            f.setLocation(200200);

            f.setLayout(new FlowLayout());

            JProgressBar pb = new JProgressBar();

            //进度条最大100

            pb.setMaximum(100);

            //当前进度是50

            pb.setValue(50);

            //显示当前进度

            pb.setStringPainted(true);

            f.add(pb);

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            f.setVisible(true);

        }

    }

    示例 13 : 文件选择器

    JFileChooser 表示文件选择器
    使用FileFilter用于仅选择.txt文件

    fc.setFileFilter(new FileFilter() {

        public String getDescription() {

            return ".txt";

        }

        public boolean accept(File f) {

            return f.getName().toLowerCase().endsWith(".txt");

        }

    });



    fc.showOpenDialog(); 用于打开文件
    fc.showSaveDialog(); 用于保存文件

    文件选择器

    package gui;

      

    import java.awt.FlowLayout;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import java.io.File;

      

    import javax.swing.JButton;

    import javax.swing.JFileChooser;

    import javax.swing.JFrame;

    import javax.swing.JOptionPane;

    import javax.swing.filechooser.FileFilter;

      

    public class TestGUI {

      

        public static void main(String[] args) {

      

            JFrame f = new JFrame("LOL");

            f.setLayout(new FlowLayout());

            JFileChooser fc = new JFileChooser();

            fc.setFileFilter(new FileFilter() {

                 

                @Override

                public String getDescription() {

                    // TODO Auto-generated method stub

                    return ".txt";

                }

                 

                @Override

                public boolean accept(File f) {

                    return f.getName().toLowerCase().endsWith(".txt");

                }

            });

      

            JButton bOpen = new JButton("打开文件");

      

            JButton bSave = new JButton("保存文件");

      

            f.add(bOpen);

            f.add(bSave);

      

            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            f.setSize(250150);

            f.setLocationRelativeTo(null);

      

            f.setVisible(true);

              

            bOpen.addActionListener(new ActionListener() {

                  

                @Override

                public void actionPerformed(ActionEvent e) {

                     int returnVal =  fc.showOpenDialog(f);

                     File file = fc.getSelectedFile();

                     if (returnVal == JFileChooser.APPROVE_OPTION) {

                         JOptionPane.showMessageDialog(f, "计划打开文件:" + file.getAbsolutePath());

                     }

                      

                }

            });

            bSave.addActionListener(new ActionListener() {

                @Override

                public void actionPerformed(ActionEvent e) {

                    int returnVal =  fc.showSaveDialog(f);

                    File file = fc.getSelectedFile();

                    if (returnVal == JFileChooser.APPROVE_OPTION) {

                        JOptionPane.showMessageDialog(f, "计划保存到文件:" + file.getAbsolutePath());

                    }

                }

            });

      

        }

      

    }


    更多内容,点击了解: https://how2j.cn/k/gui/gui-component/407.html

  • 相关阅读:
    Hive分桶bucket
    Error: java.io.IOException: org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block
    接上一篇嵌套循环问题之解决
    RPA自动化机器人uibot之循环嵌套坑
    Chrom谷歌浏览器没网之最全解决办法之一
    (语法糖)列表生成式之怪诞--(暂时无法理解)
    浅析scrapy与scrapy-redis的区别
    浅谈Python中函数式编程、面向对象编程以及古怪的PythonIC
    OpenCV+TensorFlow图片手写数字识别(附源码)
    TensorFlow Object Detection API中的Faster R-CNN /SSD模型参数调整
  • 原文地址:https://www.cnblogs.com/Lanht/p/12615451.html
Copyright © 2011-2022 走看看