• Java自学-图形界面 组件


    Swing 中的组件列表

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

    示例 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(400, 300);
            f.setLocation(200, 200);
            f.setLayout(null);
            JLabel l = new JLabel("LOL文字");
            //文字颜色
            l.setForeground(Color.red);
            l.setBounds(50, 50, 280, 30);
      
            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(400, 300);
            f.setLocation(580, 200);
            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(50, 50, 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(400, 300);
            f.setLocation(200, 200);
            f.setLayout(null);
            JButton b = new JButton("一键秒对方基地挂");
            b.setBounds(50, 50, 280, 30);
      
            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(400, 300);
            f.setLocation(580, 200);
            f.setLayout(null);
            JCheckBox bCheckBox = new JCheckBox("物理英雄");
            //设置 为 默认被选中
            bCheckBox.setSelected(true);
            bCheckBox.setBounds(50, 50, 130, 30);
            JCheckBox bCheckBox2 = new JCheckBox("魔法 英雄");
            bCheckBox2.setBounds(50, 100, 130, 30);
            //判断 是否 被 选中
            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(400, 300);
            f.setLocation(580, 200);
            f.setLayout(null);
            JRadioButton b1 = new JRadioButton("物理英雄");
            // 设置 为 默认被选中
            b1.setSelected(true);
            b1.setBounds(50, 50, 130, 30);
            JRadioButton b2 = new JRadioButton("魔法 英雄");
            b2.setBounds(50, 100, 130, 30);
     
            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(400, 300);
            f.setLocation(580, 240);
            f.setLayout(null);
            JRadioButton b1 = new JRadioButton("物理英雄");
            b1.setSelected(true);
            b1.setBounds(50, 50, 130, 30);
            JRadioButton b2 = new JRadioButton("魔法 英雄");
            b2.setBounds(50, 100, 130, 30);
     
            // 按钮分组
            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(400, 300);
            f.setLocation(580, 240);
            f.setLayout(null);
     
            //下拉框出现的条目
            String[] heros = new String[] { "卡特琳娜", "库奇" };
            JComboBox cb = new JComboBox(heros);
     
            cb.setBounds(50, 50, 80, 30);
     
            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(400, 300);
            f.setLocation(580, 240);
            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(400, 300);
            f.setLocation(200, 200);
     
            f.setLayout(new FlowLayout());
     
            JLabel lName = new JLabel("账号:");
            // 输入框
            JTextField tfName = new JTextField("");
            tfName.setText("请输入账号");
            tfName.setPreferredSize(new Dimension(80, 30));
     
            JLabel lPassword = new JLabel("密码:");
            // 输入框
            JTextField tfPassword = new JTextField("");
            tfPassword.setText("请输入密码");
            tfPassword.setPreferredSize(new Dimension(80, 30));
     
            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(400, 300);
            f.setLocation(200, 200);
     
            f.setLayout(new FlowLayout());
     
            JLabel l = new JLabel("密码:");
            // 密码框
            JPasswordField pf = new JPasswordField("");
            pf.setText("&48kdh4@#");
            pf.setPreferredSize(new Dimension(80, 30));
     
            // 与文本框不同,获取密码框里的内容,推荐使用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(400, 300);
            f.setLocation(200, 200);
      
            f.setLayout(new FlowLayout());
      
            JLabel l = new JLabel("文本域:");
      
            JTextArea ta = new JTextArea();
            ta.setPreferredSize(new Dimension(200, 150));
            //
    换行符
            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(400, 300);
            f.setLocation(200, 200);
     
            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(250, 150);
            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());
                    }
                }
            });
      
        }
      
    }
    

    更多内容,点击了解: Swing 中的组件列表

  • 相关阅读:
    FastWeb2011互联网工具发布
    本站启用新型试用模式
    TDiode单相及三相整流电路辅助设计器发布
    DCOp直流多级电路计算机辅助设计软件下载
    OpDesign2阻容耦合放大电路辅助设计软件下载
    共享软件的思考
    IpAdr网络地址计算器2011发布
    使用JavaScript动态添加复选框Checkbox
    JQuery操作checkbox、radio
    如果Oracle中的字段和数据库的系统字段重名,怎么配置NHibernate的映射实体文件
  • 原文地址:https://www.cnblogs.com/jeddzd/p/13490008.html
Copyright © 2020-2023  润新知