目录
Swing组件通常被称作“轻量级组件”,它完全由Java编写,不依赖操作系统语言。


JComponent 是swing组件存放的位置,常见的组件如下:

JFrame是一个容器,它是各个组件的载体,在开发的过程中,我们通过继承 java.swing。JFrame 来创建要的窗体
JFrame()创建没有标题窗口
Frame(String s)创建标题为s的窗口
- public void setSize(int width,int height) 设置窗口的大小
- public void setLocation(int x,int y) 设置窗口的位置,默认位置是(0,0)
- public void setBounds(int a,int b,int width,int height) 设置窗口的初始值位置是(a,b),窗口的宽是width,高是height
- public void setVisible(boolean b) 设置窗口是否可见,窗口默认是不可见的
- public void setResizable(boolean b) 设置窗口是否可调节大小,默认是可调整大小
- public void dispose() 撤销当前窗口,并释放当前窗口所使用的资源
-
-
-
- public void setExtendedState(int state) 设置窗口的扩展状态,其中参数state取JFrame类中的下列类常量:
- MAXIMIZED_HORIZ(水平方向最大化)
- MAXIMIZED_VERT(垂直方向最大化)
- MAXIMIZED_BOTH(水平、垂直方向都最大化)


- import javax.swing.*;//导入swing这个包的所有类和接口
-
- public class A {
- public static void main(String[] args){
- JFrame jf=new JFrame("hello");
- // jf.setSize(400,300);
- // jf.setLocation(600,350);
- jf.setBounds(600,350,400,300);
-
- jf.setVisible(true);//设置框架是否可见,true为可见,默认不可见。所以一定要写!!!!
- jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//设置窗体关闭方式(直接关闭应用程序),也可以写成JFrame.EXIT_ON_CLOSE
- }
- }
import javax.swing.*;
这是java导入包的语法,表示导入swing这个包的所有类和接口
swing是图形可视包,导入这个包后才能进行GUI图形化软件的开发
import 代表“引入”
javax.swing 代表“路径” (在javax文件夹下的swing文件夹)
* 代表“全部”

继承自 java.awt.Dialog 类。它是从一个窗体弹出来的另外一个窗体,它和Frame类似,需要调用 getContentPane 将窗体转换为容器,然后在容器中设置窗体的内存
JDialog:可当成——JFrame使用,但必须从属于JFrame
构造函数
- JDialog();
- JDialog(Frame f);//指定父窗口
- JDailog(Frame f,String title);//指定父窗口 + 标题
关闭方式比JFrame少一种:

- import javax.swing.*;//导入swing这个包的所有类和接口
-
-
- public class A {
- public static void main(String[] args){
- JFrame jf=new JFrame("hello");
- // jf.setSize(400,300);
- // jf.setLocation(600,350);
- jf.setBounds(600,350,400,300);
-
- jf.setVisible(true);//设置框架是否可见,true为可见,默认不可见。所以一定要写!!!!
- jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//设置窗体关闭方式(直接关闭应用程序),也可以写成JFrame.EXIT_ON_CLOSE
-
- JDialog jd=new JDialog(jf,"JDailog");
- jd.setBounds(700,450,200,150);
- jd.setVisible(true);
- jd.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
- }
- }

面板也是一种swing容器,它可以作为容器添加容纳其他的组件,但是他自己必须被加在一个容器内
JPanel 就是一种最简单的面板,他继承 java.awt.Contaniner 类
- import javax.swing.*;
- import java.awt.*;
-
- public class B {
- public static void main(String[] args){
- JFrame jf=new JFrame("JPanel");
- jf.setBounds(600,350,600,500);
- jf.setVisible(true);
- jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-
- JButton jb1=new JButton("按钮1");
- JButton jb2=new JButton("按钮2");
- JPanel jp=new JPanel(new FlowLayout());
- jp.setPreferredSize(new Dimension(100,60));//这串代码好像并没有体现,不知道什么原因
- jp.setBackground(Color.gray);
- jf.add(jp);
- jp.add(jb1);
- jp.add(jb2);
- }
- }

修改代码
- import javax.swing.*;
- import java.awt.*;
-
- public class B {
- public static void main(String[] args){
- JFrame jf=new JFrame("JPanel");
- jf.setBounds(300,350,500,500);
- jf.setLayout(null);
- jf.setVisible(true);
- jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-
- JButton jb1=new JButton("按钮1");
- JButton jb2=new JButton("按钮2");
- JPanel jp=new JPanel(new FlowLayout());
- jp.setBounds(100,100,300,300);
- jp.setBackground(Color.gray);
- jf.add(jp);
- jp.add(jb1);
- jp.add(jb2);
- }
- }
还是想有大佬可以指点一下问题的原因
JScrollPane是带滚动条的面板。因此,在碰到需要将一个达到组件放到一个小较小的空间的时候,使用该面板,JScollPane 内只能添加一个个组件;因此,如果需要将多个组件添加到一个JScollPane 中时,需要添加的组件添加到 JPanel 中,再将 JPanel 添加到 JScollPane 中
- import javax.swing.*;
- import java.awt.*;
-
- public class JScrollpane {
- public static void main (String[] args){
- JFrame jf=new JFrame("JScollPane");
- jf.setBounds(500,500,500,200);
-
-
- JButton jb=new JButton("香蕉");
- JButton jb2=new JButton("苹果");
- JButton jb3=new JButton("菠萝蜜");
-
- jb.setPreferredSize(new Dimension(300,300));
- JPanel jp=new JPanel();
- jp.add(jb);
- jp.add(jb2);
- jp.add(jb3);
- JScrollPane js=new JScrollPane(jp);
-
- jf.add(js);
- jf.setVisible(true);
- jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- }
- }

补充:
JButton在FlowLayout、BorderLayout等一些布局中使用setSize()设置大小无法生效的,可以使用setPreferredSize方法进行设置。
