18.2 Swing常有窗体
18.2.1 JFrame窗体
例子:第一个窗体程序
-
package shiba;
-
import java.awt.Container;
-
import javax.swing.JFrame;
-
import javax.swing.JLabel;
-
import javax.swing.SwingConstants;
-
import javax.swing.WindowConstants;
-
public class JFreamTest {
-
public static void main(String[] args) {
-
JFrame jf=new JFrame();
-
jf.setTitle("创建一个JFrame窗体");
-
Container container=jf.getContentPane();
-
JLabel jl=new JLabel("这是一个JFreme窗体");
-
jl.setHorizontalAlignment(SwingConstants.CENTER);
-
container.add(jl);
-
jf.setSize(300,150);
-
jf.setLocation(320,240);
-
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
-
jf.setVisible(true);
-
}
-
}
18.2.2 JDialog 对话框
publicJDialog():创建一个没有标题和父窗体的对话框。
publicJDialog(Frame f):创建一个没有标题,但指定父窗体的对话框。
public JDialog(Frame f, boolean model): 创建一个没有标题,但指定父窗体和模式的对话框,如果model为true,那么弹出对话框后,用户无法操作父窗体。
publicJDialog(Framef;String title):创建一个指定标题和父窗体的对话框。团 publicJDialog(Framef, String title, boolean model):创建一个指定标题、父窗体和模式的对话框
例子:在窗体中弹出对话框
-
package shiba;
-
import java.awt.Container;
-
import java.awt.event.ActionEvent;
-
import java.awt.event.ActionListener;
-
import javax.swing.JButton;
-
import javax.swing.JDialog;
-
import javax.swing.JFrame;
-
import javax.swing.JLabel;
-
import javax.swing.WindowConstants;
-
class MyJDialog extends JDialog{
-
public MyJDialog(MyFrame frame) {
-
super(frame,"第一个JDialog窗体",true);
-
Container container=getContentPane();
-
container.add(new JLabel("这是一个对话框"));
-
setBounds(120,120,100,100);
-
}
-
}
-
public class MyFrame extends JFrame{
-
public MyFrame() {
-
Container container=getContentPane();
-
container.setLayout(null);
-
JButton bl=new JButton("弹出对话框");
-
bl.setBounds(10,10,100,21);
-
bl.addActionListener(new ActionListener() {
-
public void actionPerformed(ActionEvent e) {
-
MyJDialog dialog = new MyJDialog(MyFrame.this);
-
dialog.setVisible(true);
-
}
-
});
-
container.add(bl);
-
setSize(200,200);
-
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
-
setVisible(true);
-
}
-
public static void main(String[] args) {
-
// TODO 自动生成的方法存根
-
new MyFrame();
-
}
-
}
18.2.3 JOptionPane小型对话框
例子:弹出会话框,问用户准备好了吗?
例子: 弹出会话框,问用户是否离开?
例子:弹出会话框,让用户输入自己的名字
例子:弹出警告对话框
18.3 常用布局管理器
开发 Swing 程序时,在容器中使用布局管理器能够设置窗体的布局,进而控制 Swing 组件的位置大小。Swing 常用的布局管理器为绝对布局管理器、流布局管理器、边界布局管理器和网格布局管理器
例子:
18.3.2 FlowLayout 流布局管理器
public FlowLayout()。
public FlowLayout(int alignment).
public FlowLayout(int alignment,int horizGap,int vertGap)
例子:使用流布局排序按钮
1 8.3.3 BorderLayout边界布局管理器
例子:使用边界布局排序按钮
18.3.4 GridLayout 网格布局管理器
public GridLayout(int rows, int columns)
public GridLayout(int rows, int columns, int horizGap, int vertGap)。
例子:使用网格排序按钮
18.4 常用面板
在Swing 程序设计中,面板是一个容器,被用于容纳其他组件,但面板必须被添加到其他容器中Swing中常用的面板包括JPanel 面板和JScrollPane面板。
18.4.1 JPanel面板
例子:在一个窗体中显示4种布局风格
18.4.2 JScrollPane 滚动面板
例子:为窗体添加上下滚动条
18.5 文字标签组件与图标
在 Swing 程序设计中,标签(JLabel) 被用于显示文本、图标等内容。在 Swing 应用程序的用界面中,用户能够通过标签上的文本、图标等内容获得相应的提示信息。
18.5.1 JLabel标签
publicJLabel0:创建一个不带图标或文本的标签
publicJLabel(Icon icon):创建一个带图标的标签。
public JLabel(Icon icon,int aligment): 创建一个带图标的标签,并设置图标的水平对齐方式publicJLabel(String text,int aligment):创建一个带文本的标签,并设置文本的水平对齐方式
public JLabel(String text,Icon icon,int aligment): 创建一个带文本和图标的JLabel对象,并设置文本和图标的水平对齐方式。
例子:在窗体中显示文字标签
18.5.2 图标的使用
1.在Swing程序设计中,图标经常被添加到标签,按钮等组件,使用javax.swing.ImageIcon类可以依据现有的图片创建图标。
例子:在窗体中演示图标
18.6 按钮组件
18.6.1.JButton 按钮
publieJButon():创建一个不带文本成图标的按钮。
publieJButton(Sting text()):创建一个带文本的按组
public JButon(con icon): 创建一个带图标的按钮。
publieJButon(String ext,lcon icon): 创建一个带文本和图标的按钮
例子:
18.6.2.JRadioButton 单选按钮
18.6.3.JCheckBox 复选框
复选框组件有JCheckBox对象表示,与单选不同的是,窗体中的复选框可以被选中多个,这是因为每一个都提供“被选择”和“不被选中”两种状态
18.7.列表组件
18.7.1.JComboBox 下拉列表框
初次使用Swing中的下拉列表框时,会感觉到Swing中的下拉列表框与Windows操作系统中的拉列表框有一些相似,实质上两者并不完全相同,因为 Swing中的下拉列表框不仅可以供用户从中择列表项,也提供编辑列表项的功能。
18.7.2.JList列表框
18.8文本组件
18.8.1.JTextField 文本框
JTextField 类的常用构造方法如下:
publicJTexiFied():创建一个文本未被指定的文本框。
publieJTextField(String text()):创建一个指定文本的文本框。
publicJTextField(int eldwidth):创建一个指定列宽的文本框。
publicJTextFicld(String text int fildwidth):创建一个指定文本和列宽的文本框
18.8.2.JPasswordField 密码框
18.8.3.JTextArea 文本域
18.9表格组件
创建表格
18.9事件监听器
ActionEvent动作事件
.KeyEvent 键盘事件
KevListener 接口共有 3个抽象方法,分别在发生击键事件(按下并放键)、按键被技下(手指技健但不松开)和按键被释放(手指从按下的键上松开)时被触发,具体如下,
public interface KeyListener extends EventListener (public void keyTyped(KeyEvent e);
11发生击键事件时被触发1/按键被按下时被触发1/按键被释放时被触发
public void keyPressed(KeyEvent e);public void keyReleased(KeyEvent e)
MouseEvent 鼠标事件
public interface MouseListener extends EventListener (
public void mouseEntered(MouseEvent e);
public void mousePressed(MouseEvent e):public void mouseReleased(MouseEvent e)
//光标移入组件时被触发//鼠标按键被按下时被触发/鼠标按键被释放时被触发//发生单击事件时被触发//光标移出组件时被触发
public void mouseClicked(MouseEvent e);
public void mouseExited(MouseEvent e):