目录
Java Swing
1.常见组件的介绍
JFrame、JPanel、JLabel、JTextArea、JTextField等等
1.1.相关内容
- 容器:例如JFrame,用于面板的放入
- 面板:例如JPanel,用于设置布局,设置背景图片,用于组件的放入
- 布局:用于组件的排版模式,有流式布局、边界布局、以及绝对布局
- 组件:用于给用户显示相关内容或触发事件,例如按钮、标签、文本框
1.2.创建思想
- 创建并设置底层容器JFrame宽高,JFrame就是一个空白窗口,如下代码与图片:
import javax.swing.*; public class Frame { JFrame jFrame; //定义窗口类JFrame的变量名jFrame Frame(){ jFrame=new JFrame("窗口"); //窗口标题为“窗口” jFrame.setSize(500,300); //设置窗口大小,宽500像素,高300像素 jFrame.setResizable(false); //设置窗口是否可以最大化,false为不可最大化 jFrame.setLocationRelativeTo(null); //设置窗口的父窗口,显示于父窗口中间位置,设置为null,表示以电脑窗口为父窗口,因此此窗口运行后居中显示 jFrame.setVisible(true); //运行程序后显示该窗口,默认为不显示,因此需要设置为true jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); //窗口关闭后的操作 } public static void main(String[] args) { Frame frame=new Frame(); } }
- 设置面板、设置面板布局和组件,下面是JPanel默认的流式布局:
import javax.swing.*; public class Frame { JFrame jFrame; JPanel jPanel; JButton jButton; JLabel jLabel; JTextField jText; JTextArea jTextArea; Frame() { jPanel=new JPanel(); //创建面板,面板默认布局是FlowLayout(流式布局) jButton =new JButton("按钮"); jLabel=new JLabel("标签"); jText=new JTextField(10); //设置文本框的列数(实质上就是宽度) jTextArea =new JTextArea(10,10); //文本区是用来写文章的,所以设置文本区的宽高 jPanel.add(jLabel); //将组件jLabel放入面板 jPanel.add(jText); //将组件文本框放入面板 jPanel.add(jTextArea); //将组件文本区放入面板 jPanel.add(jButton); //将组件按钮放入面板 jFrame = new JFrame("窗口"); jFrame.add(jPanel); //再将放入组件的面板放入jFrame窗口容器,得到如下图 jFrame.setSize(500, 300); jFrame.setResizable(false); jFrame.setLocationRelativeTo(null); jFrame.setVisible(true); jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } public static void main(String[] args) { Frame frame = new Frame(); } }
布局其实就是安排组件的放入模式,这里的流式布局就是将组件一个接着一个从左到右放入组件
下面是绝对布局:
import javax.swing.*;
public class Frame {
JFrame jFrame;
JPanel jPanel;
JButton jButton;
JLabel jLabel;
JTextField jText;
JTextArea jTextArea;
Frame() {
jPanel=new JPanel(null); //设置面板为绝对布局(null)
jLabel=new JLabel("标签");
jLabel.setBounds(10, 20, 60, 30); //设置组件坐标和大小,x轴坐标为10(也就是距离窗口左边边框10个像素,距离y轴20(也就是距离窗口上边框20个像素
jText=new JTextField(10);
jText.setBounds(50, 20, 200, 30);
jTextArea =new JTextArea(10,10);
jTextArea.setBounds(50, 60, 200, 100);
jButton =new JButton("按钮");
jButton.setBounds(120, 180, 60, 30);
jPanel.add(jLabel);
jPanel.add(jText);
jPanel.add(jTextArea);
jPanel.add(jButton);
jFrame = new JFrame("窗口");
jFrame.add(jPanel);
jFrame.setSize(500, 300);
jFrame.setResizable(false);
jFrame.setLocationRelativeTo(null);
jFrame.setVisible(true);
jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
public static void main(String[] args) {
Frame frame = new Frame();
}
}
绝对布局就是一个空布局,不对组件有任何约束,组件通过自身设置坐标和宽高来放入空布局中
2.总结
- 不难看出java窗体的形成就是嵌套
- 先创建空白容器,接着创建面板,然后在面板中设置布局,最后将组件放入面板,最后将面板放入容器
- 这里只是举了一部分例子,知道java窗体形成的结构,然后再去好好了解更多的面板、布局、组件的功能即可