swing (简单了解)

问题

swing
布局管理器
widget

创建GUI的一般步骤是什么?

创建一个窗口
    JFrame frame = new JFrame();
创建组件
    JButton button;
    button = new JButton("点我吧!");
把组件加到frame上
    frame.getContentPane().add(button);
显示出来
    frame.setSize(300, 600);
    frame.setVisible(true);

布局管理器是什么?

布局管理器是一个对象。
布局管理器有很多关联组件,这些组件大部分是背景组件。
我们可能会在某个背景组件(或者说框架上)放一些其他组件,比如按钮什么的,那么这个背景组件的布局管理器就是控制在其上面放置的所有组件的,如果有一个按钮放上去,那么他可以控制这个按钮的位置和大小
#布局管理器只能管自己这一层的,如果内部还有个框架或者他本身处于另一个框架内,他都管不着
#布局管理器可以有很多类型,l

那么布局管理器要怎么工作呢?

布局管理器要安排不同组件的设定,可能会要求怎么设定,也可能按组件的方法来(有意思?)
#不同的布局管理器有不同的策略

布局管理器还不止一种?

BorderLayout
FlowLayout
BoxLayout
他们的设定很有意思,可以看看,我就不写了

注意:

需要有框架JFrame,然后才能在框架上安排面板Jpanel
JFrame必须要连接到底层的操作系统以便来存取显示装置

点击按钮在文本框显示文字

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;

public class Panel implements ActionListener{
    JTextArea text;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Panel gui = new Panel();
        gui.show();
    }
    public void show() {
        JFrame frame = new JFrame("Panel");
        JPanel panel = new JPanel();
        JTextField field = new JTextField(20);
        text = new JTextArea(10,20);
        text.setLineWrap(true);

        JScrollPane scroller = new JScrollPane(text);
        scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

        JButton button1 = new JButton("hahahhahaha");
        JButton button2 = new JButton("------------");
        JButton button3 = new JButton("YYYYYYYYYYYYYYY");
        button2.addActionListener(this);

        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
        panel.setBackground(Color.blue);
        System.out.println(field.getText());

        //panel.add(field);
        panel.add(button1);
        panel.add(button2);
        panel.add(button3);
        panel.add(scroller);
        frame.getContentPane().add(BorderLayout.EAST, panel);

        frame.setSize(600, 600);
        frame.setVisible(true);
    }
    //可以使用内部类创建多个按钮,不同的按钮出现不同的效果
    public void actionPerformed(ActionEvent ex) {
        text.append("button2 clicked!\n");

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值