Swing组件
1.组件是比widget更为正确的术语,从技术上来说,widget是个Swing的组件,几乎所有的GUI组件都来自于javax.swing.JComponent。
2.组件是可以嵌套的,在swing中,几乎所有组件都能够安置其他的组件。一般来说,可以将用户交互组件放在框架和背景组件上。
3.JPanel通常用作背景。
布局管理器
1.布局管理器是个与特定组件关联的Java对象,它大多数是背景组件。布局管理器,负责组件的大小和位置。
2.布局管理器用来控制所关联组件上携带的其他组件。
3.如果面板带有5项组件,就算它们都有各自的布局管理器,它们的大小与位置还是由面板的布局管理器来管理。
布局情境举例: 1.制作面板并加上三个按钮。
2.面板的布局管理器会询问每个组件理想的大小应该是什么。
3.面板的布局管理器以它的布局策略来决定是否应该要尊重全部或部分的按钮理想。
4.把面板加到框架上。
5.框架的布局管理器询问面板的理想尺寸。
6.框架的布局管理器以它的布局策略来决定是否应该要尊重全部或部分的面板理想。
三大布局管理器:
BorderLayout:框架默认的管理器。
FlowLayout:从左到右,从上到下。是JPanel的默认管理器。。
BoxLayout:从上到下,每行一个。
操作Swing组件
1.JTextField
//构造函数
JTextField field = new JTextField(20);//20代表字宽
JTextField field = new JTextField(“Your name”);
//取得文本内容
System.out.println(field.getText());
//设定内容
field.setText(“whatever”);
field.setText("");
//取得用户输入完毕按下return/enter键的事件
field.addActionListener(myActionListener);
//选取文本字段的内容
field.selectAll();
//焦点拉回文本字段
field.requestFocus();
2.JTextArea
//构造函数
JTextArea text = new JTextArea(10,20);
//只有垂直的滚动条
JScrollPane scroller = new JScrollPane(text);
text.setLineWrap(true);
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
panel.add(scroller);
//替换掉文字内容
text.setText(“Not all who are lost are wandering”);
//加入文字
text.append(“button clicked”);
//选取内容
text.selectAll();
//焦点拉回文本字段
text.requestFocus();
3.JCheckBox
//构造函数
JCheckBox check = new JCheckBox(“Goes to 11”);
//监听item的事件
check.addItemListener(this);
//处理事件
public void itemStateChanged(ItemEvent ev) {
String onOrOff = “off”;
if (check.isSelected()) onOrOff = “on”;
System.out.println(“Check box is “ + onOrOff);
}
//选取/不选取
check.setSelected(true);
check.setSelected(false);
4.JList
//构造函数
String [] listEntries = {“alpha”, “beta”, “gamma”, “delta”,“epsilon”, “zeta”, “eta”, “theta “};
list = new JList(listEntries);
//显示垂直的滚动条
JScrollPane scroller = new JScrollPane(list);
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
panel.add(scroller);
//设定显示的行数
list.setVisibleRowCount(4);
//限制用户只能选取一个项目
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
//对选择事件注册
list.addListSelectionListener(this);
//处理事件
public void valueChanged(ListSelectionEvent lse) {
if( !lse.getValueIsAdjusting()) {
String selection = (String) list.getSelectedValue();
System.out.println(selection);
}
}