GUI图形用户界面

1.窗体

容器是用来存放 按钮,输入框等组件:
1,JFrame是最常用的窗体型容器,默认情况下,在右上角有最大化最小化按钮
2,JDialog也是窗体型容器,右上角没有最大和最小化按钮

JDialog模态:当JFrame容器被JDialog容器设置为模态的时候,JFrame容器是不能被激活的
JFrame f = new JFrame("外部窗体");
JDialog d = new JDialog(f);
        // 设置为模态
        d.setModal(true);

2.布局器

布局器是用在窗体上的。 用来决定窗体上的组件摆放的位置和大小

 // 设置布局器为null,即进行绝对定位,容器上的组件都需要指定位置和大小
        f.setLayout(null);


// 设置布局器为FlowLayerout
        // 容器上的组件水平摆放,不需要指定位置和大小
        f.setLayout(new FlowLayout());


// 设置布局器为BorderLayerout
        // 容器上的组件按照上北下南左西右东中的顺序摆放
        f.setLayout(new BorderLayout());
// 加入到容器的时候,组件需要指定位置
        f.add(b1, BorderLayout.NORTH);


 // 设置布局器为GridLayerout,即网格布局器
        // 该GridLayerout的构造方法表示该网格是2行3列
        f.setLayout(new GridLayout(2, 3));

3.组件

//文字
JLabel l = new JLabel("LOL文字");
        //文字颜色
        l.setForeground(Color.red);


//图片
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());


//复选框
 JCheckBox bCheckBox = new JCheckBox("物理英雄");
        //设置 为 默认被选中
        bCheckBox.setSelected(true);


//单选框
 JRadioButton b1 = new JRadioButton("物理英雄");
        // 设置 为 默认被选中
        b1.setSelected(true);



 // 按钮分组
        ButtonGroup bg = new ButtonGroup();
        // 把按钮b1,b2放在 同一个 按钮分组里 ,这样同一时间,只有一个 按钮 会被选中
        bg.add(b1);
        bg.add(b2);


//下拉框
  String[] heros = new String[] { "卡特琳娜", "库奇" };
        JComboBox cb = new JComboBox(heros);


//对话框
 int option = JOptionPane.showConfirmDialog(f, "是否 使用外挂 ?");
        if (JOptionPane.OK_OPTION == option) {
            String answer = JOptionPane.showInputDialog(f, "请输入yes,表明使用外挂后果自负");
            if ("yes".equals(answer))
                JOptionPane.showMessageDialog(f, "你使用外挂被抓住! 罚拣肥皂3次!");
        }



// 输入框
        JTextField tfName = new JTextField("");
        tfName.setText("请输入账号");


//文本域
JTextArea ta = new JTextArea();
//设置自动换行
        ta.setLineWrap(true);



// 密码框
        JPasswordField pf = new JPasswordField("");
        pf.setText("&48kdh4@#");
 // 获取密码框里的内容,推荐使用getPassword,该方法会返回一个字符数组
        char[] password = pf.getPassword();
        String p = String.valueOf(password);


//进度条
JProgressBar pb = new JProgressBar();
        //进度条最大100
        pb.setMaximum(100);
        //当前进度是50
        pb.setValue(50);
        //显示当前进度
        pb.setStringPainted(true);


//文件选择
JFileChooser fc = new JFileChooser();

4.面板

面板(JPanel)的作用:把组件放在面板上,然后再把面板放在窗体上。一旦移动一个面板,其上面的组件,就会全部统一跟着移动

JPanel p1 = new JPanel();
        // 设置面板大小
        p1.setBounds(50, 50, 300, 60);
        // 设置面板背景颜色
        p1.setBackground(Color.RED);


JFrame上有一层面板,叫做ContentPane
平时通过f.add()向JFrame增加组件,其实是向JFrame上的 ContentPane加东西



// 创建一个水平JSplitPane,左边是面板p1,右边是p2
        JSplitPane sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, pLeft, pRight);
        // 设置分割条的位置
        sp.setDividerLocation(80); 
        // 把sp当作ContentPane
        f.setContentPane(sp);	


 //带滚动条的面板
        JTextArea ta = new JTextArea();
        for (int i = 0; i < 1000; i++) {
            ta.append(String.valueOf(i));
        }
        //自动换行
        ta.setLineWrap(true);
JScrollPane sp = new JScrollPane(ta);

5.菜单

// 菜单栏
        JMenuBar mb = new JMenuBar();
// 菜单
        JMenu mHero = new JMenu("英雄");
// 菜单项
        mHero.add(new JMenuItem("近战英雄"));
        mHero.add(new JMenuItem("远程英雄"));
// 把菜单加入到菜单栏
        mb.add(mHero);
// 把菜单栏加入到frame,这里用的是set而非add
        f.setJMenuBar(mb);

6.工具栏

工具栏用于存放常用的按钮

 // 工具栏
        JToolBar tb = new JToolBar();
        // 为工具栏增加按钮
        JButton b1 = new JButton(new ImageIcon());
// 把工具栏放在north的位置
        f.setLayout(new BorderLayout());
        f.add(tb, BorderLayout.NORTH);

 // 给按钮设置提示信息
        b1.setToolTipText("坑爹英雄");

7.表格

显示一个Table需要两组数据
// 表格上的title
        String[] columnNames = new String[]{ "id", "name", "hp", "damage" };
// 表格中的内容,是一个二维数组
        String[][] heros = new String[][] {
 { "1", "盖伦", "616", "100" },
                { "2", "提莫", "512", "102" },
 { "3", "奎因", "832", "200" } 
};
//创建表格
        JTable t = new JTable(heros, columnNames);
// 把table放进去就可以看到table的title 
        JScrollPane sp = new JScrollPane(t);
 // 把sp而非JTable加入到JFrame上,
        f.add(sp, BorderLayout.CENTER);



// 设置列宽度
        t.getColumnModel().getColumn(0).setPreferredWidth(10);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值