问题
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");
}
}