您好,登录后才能下订单哦!
这篇文章主要介绍“Java GUI常用窗体组件与面板如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java GUI常用窗体组件与面板如何使用”文章能帮助大家解决问题。
Swing组件通常被称作“轻量级组件”,它完全由Java编写,不依赖操作系统语言。
类继承关系
JavaSwing组件间的继承关系
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方法进行设置
使用布局管理器时,使用setPreferredSize方法:
jbutton.setPreferredSize(new Dimension(w,h));
使用绝对布局时:
jbutton.setBounds(x,y,w,h);
关于“Java GUI常用窗体组件与面板如何使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。