Swing窗体(JFrame)
小问题
之前学过Awt包,继承Frame类的那个窗体,有个很大的问题是,它不行正常的显示中文在控件上,这就很难受。经过学习,我发现Swing窗体是没有这个问题的,当然也可能是我电脑的问题。
Swing&AWT功能
- 界面设计
- 窗体、控件、面板、布局管理
- 事件处理机制
Swing&AWT区别
- 两个是图形界面包
- AWT做图形,使用本地操系统方法,图像界面与本地操作系统一致
- Swing做图形,使用自己的方法,与平台无关。
- 使用Swing方式
一、Swing概述
1、完成第一个窗体
- 使用java.swing包
- 借用JFrame类
- 继承
- 设计窗体
- 设置窗体大小
- 设置标题
- 设置关闭窗体按钮
- 设置窗体显示
import javax.swing.*;
public class JFrameTextRun {
public static void main(String[] args) {
new JFrameText();
}
}
class JFrameText extends JFrame{
public JFrameText(){
init();
}
public void init(){
setTitle("啦啦啦窗口标题");
setBounds(500,500,400,300);
// setSize(400,300); //大小 //同上
// setLocation(500,500);//启动方位
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置默认的关闭方式
setVisible(true);//窗口是否可见
}
}
运行结果:
2、向窗体添加控件
- 继承窗体
- 添加自己的控件
- 做为窗体的成员属性
- 设置控件的属性
2.1、JTextField方法:
方法 | 说明 |
---|---|
JTextField() | 构造新的文本输入框 |
JTextField(String text) | 构造一个新的文本输入框,以指定文本作为初始文本 |
getColumns() | 返回文本字段中的列数 |
setColumns(int columns) | 设置最多可显示内容的列数 |
setHorizontalAlignment(int value) | 设置文本字段中文本的水平对齐方式:JTextField.LEFT JTextField.CENTER JTextField.RIGHT |
import javax.swing.*;
public class JFrameTextRunA{
public static void main(String[] args) {
new JFrameTextA();
}
}
class JFrameTextA extends JFrame{
public JFrameTextA(){
init();
}
public void init(){
setTitle("啦啦啦窗口标题");
setBounds(500,500,400,300);
// setSize(400,300); //大小 //同上
// setLocation(500,500);//启动方位
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置默认的关闭方式
setVisible(true);//窗口是否可见
setResizable(false);
//------------------------------------------------------------------------
//2、向窗体添加控件
// 2.1、JTextField方法:
JTextField JTF1 = new JTextField();//构造新的文本输入框
JTextField JTF2 = new JTextField("啦啦啦文本输入框",1);//构造一个新的文本输入框,以指定文本作为初始文本
JTextField JTF3 = new JTextField(5);
JTF1.setBounds(20,20,200,50);
JTF2.setBounds(20,80,200,50);
JTF3.setBounds(20,140,200,50);
add(JTF1);
add(JTF2);
JTF3.setColumns(6);
JTF3.setText(String.valueOf(JTF3.getColumns()));//返回文本字段中的列数
JTF3.setColumns(6);
JTF3.setHorizontalAlignment(JTF3.RIGHT);//设置对齐方式
add(JTF3);
}
}
遗留问题:getColumns()
2.2、JButton方法:
方法 | 说明 |
---|---|
JButton() | 创建不带文本和图标的按钮 |
JButton(Icon icon) | 创建带图标的按钮 |
JButton(String text) | 创建带文本的按钮 |
JButton(String text,Icon icon) | 创建带文本和图标的按钮 |
setRolloverlcon(Icon img) | 当鼠标经过时,显示指定的图标 |
setSelectedlcon(Icon img) | 当选择按钮时,显示img指定的图标 |
import javax.print.attribute.standard.JobName;
import javax.swing.*;
import java.awt.*;
public class TextJButton {
public static void main(String[] args) {
new winFrame();
}
}
class winFrame extends JFrame{
public winFrame(){
init();
}
public void init(){
setTitle("窗口标题");
setBounds(500,300,500,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setResizable(false);
//创建容器
Container container = this.getContentPane();
container.setLayout(null);//绝对布局
//创建不带文本和图标的按钮
JButton jButton = new JButton();
// jButton.setText("按钮A");
jButton.setBounds(0,10,200,50);
container.add(jButton);
/
//创建带图标的按钮
JButton jButton1 = new JButton(new ImageIcon(".\\icon\\如何养猪.jpg"));
jButton1.setBounds(0,70,200,200);
container.add(jButton1);
/
//创建带文本的按钮
JButton jButton2 = new JButton("按钮B,因为A没显示,哈哈哈");
jButton2.setBounds(0,280,200,50);
container.add(jButton2);
/
//创建带文本和图标的按钮
JButton jButton3 = new JButton("按钮C"/*当图片不存在时显示*/,
new ImageIcon(".\\icon\\花瓣.png"));
jButton3.setBounds(0,340,300,100);
container.add(jButton3);
//当鼠标经过时,显示指定的图标setRolloverIcon
JButton jButton4 = new JButton();
jButton4.setBounds(210,10,150,200);
jButton4.setRolloverIcon(new ImageIcon(".\\icon\\淋光.jpg"));
jButton4.s