组件及事件处理

窗口

1.JFrame类的实例就是一个底层容器,即窗口,JDialog类的实例也是一个底层容器,即对话框,其他组件必须被添加到底层容器中,借助底层容器和操作系统进行交互。JFrame类是Container类的间接子类,窗口也是一个容器,可以向其中添加组件。窗口默认被添加到显示器屏幕上,因此不允许将窗口添加到另一个容器里。
2.Component类的子类及间接子类创建的对象称为一个组件;Container类的子类及间接子类创建的对象称为一个容器;可以通过add方法向容器中添加组件;可以通过removeAll方法移除容器中的所有组件;remove(Component c)方法移除指定的组件;容器本身也是一个组件,可以把一个容器嵌套在另一个容器中;当容器中添加或移除组件时,应让容器调用validate方法,保证容器中的组件能正确显示出来。
3.setDefaultCloseOperation用来设置关闭图标窗口的处理效果:
EXIT_ON_CLOSE:结束窗口所在的应用程序
DO_NOTHING_ON_CLOSE:什么也不做
HIDE_ON_CLOSE:隐藏当前窗口
DISPOSE_ON_CLOSE:隐藏当前窗口并释放窗体所占有的其他资源

public class Text1 {
    public static void main(String[] args) {
        JFrame jFrame=new JFrame("窗口");
        Container container=jFrame.getContentPane();
        container.setBackground(Color.BLUE);//设置背景为蓝色
        jFrame.setVisible(true);//设置窗口可见
        jFrame.setBounds(100,100,100,100);//设置窗口的位置和长,宽
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);窗口关闭效果
    }
}

效果:
这里写图片描述

菜单,菜单条,菜单项

1.菜单放在菜单条里,菜单项放在菜单里
2.JComponent的子类JMenuBar负责创建菜单条,JMenuBar的一个实例就是一个菜单条;子类JMenu负责创建菜单,JMenu的一个实例就是一个菜单;子类JMenuItem负责创建菜单项,JMenuItem的一个实例就是一个菜单项。菜单本身也是一个菜单项,可以将菜单看作菜单项添加到某个菜单中。
3.可以通过setIcon方法为菜单项设置图标

public class Text2 extends JFrame{

    JMenuBar jMenuBar;
    JMenu jMenu1,jMenu2;
    JMenuItem item1,item2;

    Text2(){
        setLayout(new FlowLayout());
        jMenuBar=new JMenuBar();//菜单条
        jMenu1=new JMenu("菜单");//菜单
        jMenu2=new JMenu("java");//菜单里的菜单
        item1=new JMenuItem("c");//菜单项
        item2=new JMenuItem("c++");
        jMenu2.add(new JMenuItem("继承"));
        jMenu2.add(new JMenuItem("封装"));

        setJMenuBar(jMenuBar);
        jMenuBar.add(jMenu1);
        jMenu1.add(jMenu2);
        jMenu1.add(item1);
        jMenu1.add(item2);

        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100,100,200,200);
    }

    public static void main(String[] args) {
        Text2 text2=new Text2();
    }
}

常用组件与布局

1.常用组件:
JTextField:文本框:允许用户输入单行文本
JTextArea:文本区:允许用户输入多行文本
JButton:按钮:单击
JLabel:标签:为用户提供提示信息
JCheckBox:复选框:为用户提供多项选择,有选中与未选中两种状态
JRadioButton:单选按钮:为用户提供单项选择
JComboBox:下拉列表:单项选择
JPasswordField:密码框,默认显字符是*,可通过setEchoChar(char c)重新设置显字符

public class Text3 extends JFrame{

    JComboBox<String> comboBox;
    JRadioButton radioButton1,radioButton2;
    ButtonGroup group;
    JCheckBox checkBox1,checkBox2;

    Text3(){
        setLayout(new FlowLayout());
        checkBox1=new JCheckBox("音乐");
        checkBox2=new JCheckBox("美术");
        radioButton1=new JRadioButton("man");
        radioButton2=new JRadioButton("woman");
        group=new ButtonGroup();
        group.add(radioButton1);
        group.add(radioButton2);

        comboBox=new JComboBox<>();
        comboBox.addItem("java");
        comboBox.addItem("c++");

        add(comboBox);
        add(radioButton1);
        add(radioButton2);
        add(checkBox1);
        add(checkBox2);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100,100,400,200);
    }

    public static void main(String[] args) {
        Text3 text3=new Text3();
    }
}

效果:
这里写图片描述
2.常用容器
JPanel面板:默认是FlowLayout布局,可以向面板中添加组件,再把面板添加到其他容器中
JTabbedPane:选项卡容器,当向选项卡容器添加组件时,会为这个组件设置选项卡,这样点击这个选项卡就会显示这个组件,选项卡默认在顶部从左向右排列。也可以通过JTabbedPane.TOP等设置位置
JScrollPane:滚动窗格,可以将文本区放在滚动窗格中
如:

JScrollPane jScrollPane=new JScrollPane(new TextArea())

JSplitPane:拆分窗格,可分为左右或上下两部分,有两个构造方法:

JSplitPane(int a,Component b,Component c)
//参数a决定时水平还是垂直:HORIZONTAL_SPLIT,VERTICAL_SPLIT
//如
 JSplitPane jSplitPane=new JSplitPane(JSplitPane.VERTICAL_SPLIT,new JButton(),new JButton())
JSplitPane(int a,boolean d,Component b,Component c)
//参数d是决定拆分线移动时,组件是否连续变化,true是连续

JLayeredPane:分层窗格
3.常用布局

猜你喜欢

转载自blog.csdn.net/ayangann915/article/details/80470983