目录
2.单行文本(JTextField),多行文本框(JTextArea)
GUI:
GUI(Graphical User Interface)即图形用户界面,是指采用图形方式显示的用户界面,与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。
Swing :
简介:swing 是一个为Java设计的GUI工具包javax.swing,该包中包括了图形用户界面的各种组件支持。 一个 Java 的图形界面,由各种不同类型的“元素”组成,这些“元素”被称为组件(Component)。
swing中的组件可以分为两大类:容器(如窗口,对话框,面板)和功能组件(如按钮,输入框,菜单等). 它们的区别主要是在概念上的。因为每个容器也都是组件。容器是一种可以包含组件的特殊组件。
常用容器:JFrame类创造窗体
方法:
设置窗体大小:void setSize(int width, int height)
是否可见窗体:void setVisible(boolean b)
设置窗口标题:void setTitle(String title
是否可以拖拽改变大小:void setResizable(boolean resizable)
设置出现的初始位置:void setLocation(int x,int y)
是否置于屏幕中心:void setLocationRelativeTo(null);
关闭窗口程序停止:void setDefaultCloseOperation(int operation)
当前窗口消失:void dispose()
JPanel面板:
构造方法 | 说明 |
---|---|
JPanel() | 创造一个空面板 |
JPanel(LayoutManaer layout) | 创造带有指定布局的面板 |
常用方法:
void setBackground(Color bg)设置面板的背景色,由参数bg指定颜色
void setLayout(LayoutManager mgr)设置面板的布局,参数是布局管理器
Component add(Component comp)往面板中添加一个组件
常用组件:标签,文本,按钮
1.JLabel标签 :
JLable:创建一个空的标签
JLabel(String text) 创建一个带文本的标签
方法:
void setText(String text) 设置标签上的文本
String getText() 获得标签上的文本
setFont(new Font(“宋体”,Font.BOLD, 18)); 设置字体
2.单行文本(JTextField),多行文本框(JTextArea)
JTextField:
JTextField的构造函数:
JTextField(int columns)
方法:
void setText(String text) 设置文本框中的文本
String getText() 获得文本框中的文本
JTextArea:
构造函数:
JTextArea(int rows, int columns) 创建一个指定行数和列数的空文本域
方法:
void setText(String text) 设置文本域中的文本
String getText() 获得文本域中的文本
void setFont(Font font) 设置文本域中文本的字体
void setLineWrap(boolean wrap) //是否自动换行,默认false
如果需要文本区自动出现滚动条,可将文本区对象放入滚动窗格(JScrollPane)中:
JScrollPane scrollPane = new JScrollPane(txtArea);
add(scrollPane );
JFrame的基本使用方法:
用方法继承JFrame父类,然后重写他的构造方法。
Layout:布局
有三种布局方式
1.流式布局
public class DemoFrame extends JFrame {
public DemoFrame()
{
this.setTitle("欢迎登录");//设置标题
this.setSize(200, 200);//设置窗口宽高
this.setLocation(200, 400);//设置窗口位置
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口时退出程序
/*面板组件:布局管理器
* Flowlayout:流式布局 默认布局方式
* 把组件放在一排,从左到右排放,一行占满后,重新开启一行。
* 模板默认流式布局是水平居中的
* */
JPanel jPanel1=new JPanel(new FlowLayout());
//JPanel jPanel1=new JPanel(new FlowLayout(FlowLayout.LEFT,10,10));//设置组件之间水平,垂直间距
JButton jButton1=new JButton("按钮一");
JButton jButton2=new JButton("按钮二");
jPanel1.add(jButton1);
jPanel1.add(jButton2);
//把面板添加到窗口上
this.add(jPanel1);
this.setVisible(true);//让窗口显示,放在代码的最后一行。
}
public static void main(String[] args) {
new DemoFrame();
}
}
2.边界布局
public class DemoFrame extends JFrame {
public DemoFrame()
{
this.setTitle("欢迎登录");//设置标题
this.setSize(200, 200);//设置窗口宽高
this.setLocation(200, 400);//设置窗口位置
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口时退出程序
/*边界布局:
* 总共有五个区域,每个区域可以放置一个组件,并且占满该区域的空间
* 中间区域是必须的,其他几个区域可以根据需要使用
* */
JPanel jPanel2=new JPanel(new BorderLayout());
JButton jButton3=new JButton("按钮一");
JButton jButton4=new JButton("按钮二");
JButton jButton5=new JButton("按钮三");
JButton jButton6=new JButton("按钮四");
JButton jButton7=new JButton("按钮五");
jPanel2.add(jButton3,BorderLayout.EAST);
jPanel2.add(jButton4,BorderLayout.WEST);
jPanel2.add(jButton5,BorderLayout.NORTH);
jPanel2.add(jButton6,BorderLayout.SOUTH);
jPanel2.add(jButton7,BorderLayout.CENTER);
//把面板添加到窗口上
this.add(jPanel2);
this.setVisible(true);//让窗口显示,放在代码的最后一行。
}
public static void main(String[] args) {
new DemoFrame();
}
}
3.网格布局
public class DemoFrame extends JFrame {
public DemoFrame()
{
this.setTitle("欢迎登录");//设置标题
this.setSize(200, 200);//设置窗口宽高
this.setLocation(200, 400);//设置窗口位置
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口时退出程序
/*网格布局
*
* */
JPanel jPanel3=new JPanel(new GridLayout(2,2));
JButton jButton8=new JButton("按钮一");
JButton jButton9=new JButton("按钮二");
JButton jButton10=new JButton("按钮三");
JButton jButton11=new JButton("按钮四");
jPanel3.add(jButton8);
jPanel3.add(jButton9);
jPanel3.add(jButton10);
jPanel3.add(jButton11);
//把面板添加到窗口上
this.add(jPanel3);
this.setVisible(true);//让窗口显示,放在代码的最后一行。
}
public static void main(String[] args) {
new DemoFrame();
}
}
菜单:
位于边框下,分为菜单栏,菜单以及菜单项目先创建菜单栏,菜单,以及菜单项目,再将菜单栏放入面板,菜单放入菜单栏,菜单项目放入菜单项目。
public class Component1Frame extends JFrame{
public Component1Frame()
{
this.setTitle("欢迎登录");//设置标题
this.setSize(200, 200);//设置窗口宽高
this.setLocation(200, 400);//设置窗口位置
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口时退出程序
//菜单栏
JMenuBar jMenuBar=new JMenuBar();
//创建菜单
JMenu jMenu1=new JMenu("文件");
JMenu jMenu2=new JMenu("编辑");
JMenu jMenu3=new JMenu("帮助");
//菜单项目
JMenuItem jMenuItem1=new JMenuItem("新建");
JMenuItem jMenuItem2=new JMenuItem("保存");
JMenuItem jMenuItem3=new JMenuItem("剪切");
JMenuItem jMenuItem4=new JMenuItem("复制");
JMenuItem jMenuItem5=new JMenuItem("关于我们");
//把菜单添加到菜单栏
jMenuBar.add(jMenu1);
jMenuBar.add(jMenu2);
jMenuBar.add(jMenu3);
//把菜单项目添加到菜单栏
jMenu1.add(jMenuItem1);
jMenu1.add(jMenuItem2);
jMenu2.add(jMenuItem3);
jMenu2.add(jMenuItem4);
jMenu3.add(jMenuItem5);
this.setJMenuBar(jMenuBar);//放置菜单栏
this.setVisible(true);//让窗口显示,放在代码的最后一行。
}
public static void main(String[] args) {
new Component1Frame();
}
}
测试结果:
监听:事件处理
● Java中,事件处理的基本思路如下:
● 一个事件源产生一个事件并把它送到监听器那里,监听器一直等待,直到它收到一个事件,一旦事件被接受,监听器将处理这些事件;
使用方法举例:
JButton jButton1 = new JButton("注册");
jButton1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "你点击了");
}
});
当点击内容为注册的Jbutton1组件的时候,系统进行处理。