刚才说完了GUI编程的背景,基本介绍了AWT包和Swing包,了解了一下JFrame;类,下面继续说其他类。
JPanel类:在GUI编程中,不建议向窗口中直接添加控件,比日说按钮控件、标签控件、文本框控件等等。所以就出现了容器(JPanel),只需要在容器里添加控件,然后通过将容器添加的方式,添加到窗口上来去实现控件的添加。
下面是JPanel常用的构造器:
- JPanel(): 创建默认布局(FlowLayout)的面板
- JPanel(LayoutManager layout) : 以指定的布局管理器创建面板
第一种构造器是无参的,创建容器的时候,容器的默认局部管理器是流式布局。如果想要按坐标定位的方式设置容器中各个控件的位置,要使用参数类型为 LayoutManagerd的有参构造器,若该方法传入null,就可以使用坐标定位法定位每个控件在容器中的位置。
常用方法如下:
-
void setLayout(LayoutManager layout) 以指定布局管理器设置面板的布局
-
Component add(Component comp) 往面板内添加控件
-
void setBackground(Color bg) 设置面板的背景色
为窗口添加上JPanle容器,如下所示:
`public class JPanelTest extends JFrame {private JPanel jPanel;
public JPanelTest(){
//实例化容器时使用空布局(坐标定位法)
jPanel =new JPanel(null);
init();
}private void init() {
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle(“窗体的名称”);
this.setSize(300,200);
this.setResizable(false);//给容器设置背景颜色 jPanel.setBackground(Color.black); //将容器添加到窗体上 this.add(jPanel);
}
public static void main(String[] args) {
new JPanelTest();
}
}`
效果如图6所示:
常用基本控件:
JButton类:用来创建按钮
**构造器:**
JButton() 创建不带文本和图标的按钮
JButton(String txt) 创建带文本的按钮
JButton(Icon icon) 创建带图标的按钮
JButton(String text,Icon icon) 创建带文本和图标的按钮
``常用方法
String getText() 获得按钮上的文本
void setBackground(Color c) 设置按钮的背景色
void setVisible(boolean b) 设置按钮是否可见,参数b决定
void setToolTipText(String text) 设置按钮的悬停提示信息
void setIcon(Icon defaultIcon) 设置按钮的默认图标(继承自AbstractButton类)
void setText(String text) 设置按钮上的文本
JLable类:用来在窗体上显示标签,它既可以显示文本,也可以显示图像
构造器 | 作用 |
---|---|
JLabel() | 创建不带文本和图标的标签 |
JLabel(String text) | 以指定文本创建标签 |
-JLabel(Icon icon)- | -以指定图标创建标签- |
方法 | 作用 |
---|---|
void setText(String text) | 设置标签上的文本 |
String getText() | 获得标签上的文本 |
-void setIcon(Icon icon)- | -设置标签上的图标- |
Icon getIcon() | 获得标签上的图标 |
注意:JLabel只能显示文本和图标信息,用户不能对其修改
JTextField类:允许用户编辑单行文本
构造器 | 作用 |
---|---|
JTextField() | 创建一个空的文本框 |
JTextField(int columns) | 创建一个指定列数的空文本框 (此方法只有流式布局才有用) |
-JTextField(String text)- | -创建一个指定初始文本的文本框- |
JTextField(String text,int columns ) | 创建一个指定初始化文本和列数的文本框 |
常用方法 | 作用 |
---|---|
void setText(String text) | 设置文本框的文本,由text指定 |
String getText() | 获得文本框的文本 |
-void setHorizontalAlignment(int aligment)- | -设置文本框中文本的水平对齐方式:- |
水平对齐方式包括:JTextField.LEFT、JTextField.CENTER、JTextField.RIGHT。
JPasswordField类:允许编辑单行文本,像我们输入密码一般,不显示输入的字符,具体使用方式大致和JTextFieldx相同
下面来实现一个登录效果:
public class LoginText extends JFrame {
//容器
private JPanel jPanel;
//标签控件
private JLabel title;
private JLabel username;
private JLabel userpassword;
//输入用户名的文本框控件
private JTextField textUsername;
//输入密码的密码框控件
private JPasswordField pwdUser;
//登录和退出按钮控件
private JButton btnLogin;
private JButton btnQuit;
public LoginText(){
//实例化容器和控件
jPanel =new JPanel(null);
title =new JLabel("用户登录");
username =new JLabel("用户姓名");
userpassword =new JLabel("用户密码");
textUsername =new JTextField();
pwdUser =new JPasswordField();
btnLogin =new JButton("登录");
btnQuit =new JButton("退出");
init();
}
private void init() {
//设置窗口的各个属性
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("登录窗口");
this.setSize(300,200);
this.setResizable(false);
//设置各个控件的位置和坐标
//方法:setBounds()的前两个参数代表控件的左上角坐标,后两个参数为控件的宽和高
title.setBounds(100,10,100,30);
username.setBounds(20,60,75,25);
userpassword.setBounds(20,100,75,25);
textUsername.setBounds(100,60,120,25);
pwdUser.setBounds(100,100,120,25);
btnLogin.setBounds(50,140,75,25);
btnQuit.setBounds(150,140,75,25);
//将容器和所有控件加入窗体中
this.add(title);
this.add(username);
this.add(userpassword);
this.add(textUsername);
this.add(pwdUser);
this.add(btnLogin);
this.add(btnQuit);
this.add(jPanel);
this.setVisible(true);
}
public static void main(String[] args) {
new LoginText();
}
}
感觉有点手生了,我多练一会儿咳咳…