1.运用Swing
组件像是 Text Filed button scrollable list radio button 等都是继承自javax.swing.JComponent
组件是可以嵌套的(除了JFrame之外交互组件与面板组件的差异不太明确)
布局管理器是个与特定组件相关联的Java对象 控制其组件上的其他组件(组件层层嵌套)
JPanel panelA = new JPanel();
JPanel panelB = new JPanel();
panelB.add( new JButton("button1") );
panelB.add( new JButton("button2") );
panelA.add( panelB ); //panelB 控制button1与button2的大小 而panelA根据panelB的大小控制 panelB的大小(嵌套控制)
三种布局管理器:
1.BorderLayout (JFrame的默认布局方式)
分为五个区(NORTH, EAST,SOUTH,WEST,CENTER )上下区域可以指定高度但是不能指定快宽度, 左右两个区域可以指定宽度不能指定高度, 中间区域更具上下区域的情况自动调整
2.FlowLayout 从左到右依次排列,需要换行时换行 (JPanel的默认布局方式)
可以把布局管理器换掉 panel.setLayout( new BoxLayout( panel, BoxLayout.Y_AXIS) ) 他的构造参数需要知道管理哪个组件以及使用哪个轴
3.BoxLayout 会以垂直方式排列(也可水平) 强制组件从新的一行开始
2.操作Swing组件1.JTextFiled
构造函数
JTextFiled filed = new JTextFiled(20) //取得20个像素
JTextFiled filed = new JTextFiled( "Your name" );
取得文本内容
System.out.println( filed.getText() );
设定内容
filed.setText( "haha"); filed.setText(""); //清空内容
取得用户输入完毕按下的return或者enter
filed.addActionListener( myActionListion );
选取文本字段内容
filed.selectAll();
将焦点拉回文本字段
filed.requestFocus();
2.JTextArea(借助JScrollPane实现滚动)
构造函数
JTextArea text = new JTextArea( 5, 20); //5行20字宽
只有垂直的滚动条
JScrollPane scroller = new JScrollPane( text);
text.setLineWrap( true );
scroller.setVerticalScrollBarPolicy( ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS );
scroller.setHorizontalScrollVarPolicy( ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER );
panel.add( scroller );
替换掉文字内容
text.setText( "I am coming ");
加入文字
text.append( "add world");
选取内容
text.selectAll();
将焦点拉回文本字段
text.requestFocus();
3.JCheckBox
构造函数
JCheckBox check = new JCheckBox( "man" );
监听事件
check.addItemListener( this );
处理事件( 判断是否被选取)
public void itemStateChanged( ItemEvent ev ){
String onOrOff = "off";
if( check.isSelected() )
onOrOff = "on";
}
用程序来选取或不选取
check.setSelected(true);
check.setSelected( false );
4.JList
String [] listEntries = { "111", "222","333" };
JList list = new JList( listEntries );
使用垂直滚动条
JScrollPane scroller = new JScrollPane( list );
scroller.setVerticalScrollBarPolicy( ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS );
scroller.setHorizontalScrollVarPolicy( 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 );
}
}