博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
13组件与容器
阅读量:5172 次
发布时间:2019-06-13

本文共 3563 字,大约阅读时间需要 11 分钟。

Swing的组件:  

  组件(component,或称元件)是比我们之前所称的widget更为正确的术语。它们就是你会放在GUI上的东西。

所有的组件都是继承自java.swing.JComponent。

布局管理器(Layout Managers):

  • BorderLayout:分为5个区域:NORTHSOUTHEASTWESTCENTER,每个区域最多只能包含一个组件
  • FlowLayout:依次从左至右,从上至下
  • BoxLayout:X_AXIS、Y_AXIS、LINE_AXIS、PAGE_AXIS

  框架JFrame的布局管理器默认布局是BorderLayout

  面板JPanel的布局管理器默认布局是FlowLayout

FlowLayout:

面板放在框架EAST区域实例

import javax.swing.*;import java.awt.*;public class Test {    public static void main(String[] args) {        Test t = new Test();        t.go();    }    public void go() {        JFrame frame = new JFrame();        JPanel panel = new JPanel();        JButton button1 = new JButton("shock me");        // JButton button2 = new JButton("bliss");        // JButton button3 = new JButton("Button");        // JButton button4 = new JButton("Button");        // JButton button5 = new JButton("Button");        // JButton button6 = new JButton("Button");        // JButton button7 = new JButton("Button");        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        panel.setBackground(Color.red);//面板背景颜色        frame.getContentPane().add(BorderLayout.EAST,panel);//面板添加到框架,框架默认布局是BorderLayout        panel.add(button1);//按钮添加到面板        // panel.add(button2);        // panel.add(button3);        // panel.add(button4);        // panel.add(button5);        // panel.add(button6);        // panel.add(button7);        frame.setSize(300,300);        frame.setVisible(true);    }}

不添加按钮效果:面板还没有东西在上面,所以不会要求太多的区域

两个按钮效果:按钮字少的宽度比较小,顺序布局会让按钮取得刚好所需的大小

七个按钮效果:前面部分按钮被遮挡,只显示后面部分按钮,没有自动换行

BoxLayout:

面板放在框架EAST区域实例

import javax.swing.*;import java.awt.*;public class Test {    public static void main(String[] args) {        Test t = new Test();        t.go();    }    public void go() {        //创建widget        JFrame frame = new JFrame();        JPanel panel = new JPanel();        JButton button1 = new JButton("shock me");        JButton button2 = new JButton("bliss");        //更改设置        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//        panel.setBackground(Color.red);//设置背景颜色        panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));//new BoxLayout()把布局管理器换掉,(panel,BoxLayout.Y_AXIS)要管理哪个组件以及使用哪个轴        //添加widget到置顶框架、面板        frame.getContentPane().add(BorderLayout.EAST, panel);        panel.add(button1);        panel.add(button2);        frame.setSize(300,300);        frame.setVisible(true);    }}

常用Swing组件:

  • JTextField文本框
  • JTextArea文本域
  • JCheckBox 复选框
  • JList

JTextField:

JTextArea:

import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Test implements ActionListener{    JTextArea text;    public static void main(String[] args) {        Test t = new Test();        t.go();    }    public void go() {        JFrame frame = new JFrame();        JPanel panel = new JPanel();        JButton button = new JButton("Just Click It");        text = new JTextArea(10, 20);        button.addActionListener(this);        text.setLineWrap(true);//设置自动换行        JScrollPane scroller = new JScrollPane(text);        scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);        scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);        panel.add(scroller);        frame.getContentPane().add(BorderLayout.CENTER,panel);        frame.getContentPane().add(BorderLayout.SOUTH,button);        frame.setSize(350,300);        frame.setVisible(true);    }    public void actionPerformed(ActionEvent ev) {        text.append("button clicked \n");    }}

 

JCheckBox:

JList:

转载于:https://www.cnblogs.com/wmjlh/p/7308507.html

你可能感兴趣的文章
qcow2、raw、vmdk等镜像格式
查看>>
Jzoj5455【NOIP2017提高A组冲刺11.6】拆网线
查看>>
特定字符序列的判断(1028)
查看>>
华为面试
查看>>
平衡二叉树(AVL Tree)
查看>>
【BZOJ3295】[Cqoi2011]动态逆序对 cdq分治
查看>>
【CF799E】Aquarium decoration 线段树
查看>>
大运飞天 鲲鹏展翅
查看>>
从ECMA到W3C
查看>>
软件工程--第十六周学习进度
查看>>
yii2 ActiveRecord多表关联以及多表关联搜索的实现
查看>>
搜狗输入法安装--ubuntu
查看>>
ps/2接口键盘的输入及显示
查看>>
Swift———a Glance(极客学院)笔记
查看>>
【poj3294-不小于k个字符串中最长公共子串】后缀数组
查看>>
java如何获取其它用户登录的真是IP地址
查看>>
Jquery通过指定层次关系获取元素
查看>>
c# for 和 foreach 的区别
查看>>
docfx (一)
查看>>
HashMap底层实现原理/HashMap与HashTable区别/HashMap与HashSet区别
查看>>