前面虽然做出了那个棋盘覆盖的可视化,但是也是零散地查了很多方法,还是要系统的学习一下制作界面。
顶层容器Container是由JFrame直接获取的,然后JPanel是最重要的中间容器,其它容器往往直接嵌套给它。有些容器之间也会存在嵌套的关系,比如JRadioButton单选按钮要嵌套给ButtonGroup按钮组才能实现单选的功能。
图书录入系统/** * @(#)StuSwing.java * * StuSwing application * * @author 刘知昊 * @version 1.00 2017/9/30 */ import javax.swing.*; import java.awt.*; //写一个继承JFrame的类 public class StuSwing extends JFrame{ private String[] S_book={"标准教材","升学考试","学术期刊","职业培训","兴趣读物"};//只是一个字符串数组,给JList用 private String[] S_peo={"录入员1","录入员2","录入员3"}; //在构造器里写JFrame要做的事情 public StuSwing(){ /*关于窗体*/ super("海上大学图书录入系统");//调用父类构造方法创建标题 setDefaultCloseOperation(EXIT_ON_CLOSE);//按关闭时:退出 setExtendedState(NORMAL);//扩展状态 setLocation(20,20);//位置 setSize(1000,300);//尺寸 /*关于左上角图标*/ ImageIcon ii=new ImageIcon("./flora.png");//创建ImageIcon对象 Image im=ii.getImage();//获得它的Image对象 setIconImage(im);//给继承了JFrame的StuSwing对象,这个方法也是父类的 /*初始化顶层容器Container和中间容器JPanel*/ Container con=getContentPane();//顶层容器直接从JFrame获得 JPanel jp=new JPanel();//初始化一个中间容器JPanel /*初始化其它容器*/ JLabel jl_1=new JLabel("图书名称:");//JLabel标签 JTextField tf_1=new JTextField(20);//JTextField文本框 JLabel jl_2=new JLabel("图书编号:");//JLabel JTextField tf_2=new JTextField(20);//JTextField JButton jb=new JButton("录入");//JButton按钮 JTextArea ta=new JTextArea(10,75);//JTextArea文本区域 JScrollPane sp=new JScrollPane(ta);//放入JScrollPane滚动窗格中 JRadioButton rb_1=new JRadioButton("理工类");//JRadioButton单选按钮 JRadioButton rb_2=new JRadioButton("文史类",true);//JRadioButton JRadioButton rb_3=new JRadioButton("艺术类");//JRadioButton ButtonGroup bg=new ButtonGroup();//ButtonGroup按钮组(限制单选) JCheckBox[] cb={new JCheckBox("旧书"),new JCheckBox("不外借"),new JCheckBox("馆际流通")};//JCheckBox单选框,这里放在了数组里 JList<String> jl=new JList<String>(S_book);//JList列表框,这里用String[]初始化 JComboBox<String> cbb=new JComboBox<String>(S_peo);//JComboBox下拉列表,这里用String[]初始化 cbb.setEditable(false);//设置它不能被编辑 /*容器嵌套:其它容器->中间容器JPanel->顶层容器Container*/ //以下容器嵌套给了ButtonGroup bg.add(rb_1); bg.add(rb_2); bg.add(rb_3); //以下容器嵌套给了JPanel jp.add(cbb); jp.add(sp); jp.add(jl); for(int i=0;i<3;i++) jp.add(cb[i]); jp.add(jl_1); jp.add(tf_1); jp.add(jl_2); jp.add(tf_2); jp.add(rb_1);//注意不能直接把ButtonGroup给JPanel,还是要一个一个给 jp.add(rb_2); jp.add(rb_3); jp.add(jb); //最后顶层容器Container里嵌套了这个JPanel con.add(jp); /*设置JFrame(的子类的)可见性*/ setVisible(true); } //主方法中只要创建这样一个对象就行了 public static void main(String[] args) { StuSwing sw=new StuSwing(); } }
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485下面这个例子要特别注意setIcon(ImageIcon…)方法可以设置某些容器外观图片化,里面传递的是一个ImageIcon对象。如果不做别的事,那么这个ImageIcon对象里图像的大小就直接被使用了,如果要改变这个大小,就要获取它的Image对象,然后用getScaledInstance获取这个Image对象的缩放版本(往往直接覆盖这个Image对象就行了),然后用这个缩放版本去还给那个ImageIcon对象,才能更改它。
登录界面import javax.swing.*; import java.awt.*; //写一个继承JFrame的类 public class StuSwing extends JFrame{ //在构造器里写JFrame要做的事情 public StuSwing(){ /*关于窗体*/ super("登录>>海上大学图书录入系统"); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setExtendedState(NORMAL); this.setLocation(200,200); this.setSize(300,250); /*关于左上角图标*/ ImageIcon ii_1=new ImageIcon("./login.png");//创建ImageIcon对象 Image im_1=ii_1.getImage();//获得它的Image对象 this.setIconImage(im_1);//注意区分:这是设置JFrame图标的方法 /*初始化顶层容器Container和中间容器JPanel*/ Container con=this.getContentPane(); JPanel jp=new JPanel(); /*初始化其它容器*/ JLabel jl_tu=new JLabel();//这个JLabel将用来装载一张图片 ImageIcon ii_2=new ImageIcon("./tu.jpeg");//创建ImageIcon对象 Image im_2=ii_2.getImage();//获得它的Image对象 //注意!下面这句意思是获取这个Image对象的缩放版本并赋回来给它 im_2=im_2.getScaledInstance(260,150,Image.SCALE_DEFAULT); ii_2.setImage(im_2);//更改这个Image对象后还要给ImageIcon对象 jl_tu.setIcon(ii_2);//注意区分:这是设置容器外观图片化的方法 JLabel jl_1=new JLabel("用户名"); JTextField tf=new JTextField(20); JLabel jl_2=new JLabel("密码"); JPasswordField pf=new JPasswordField(20);//密码域 pf.setEchoChar('#');//设置密码掩护字符 /*容器嵌套:其它容器->中间容器JPanel->顶层容器Container*/ jp.add(jl_tu); jp.add(jl_1); jp.add(tf); jp.add(jl_2); jp.add(pf); con.add(jp); /*可见性*/ this.setVisible(true); } //在主方法中创建这个类的对象 public static void main(String args[]){ StuSwing sw=new StuSwing(); } }
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657相关知识
JAVA有两个赋值语句
Photoshop制作炫酷的UI界面中抽象花朵背景
【木棉花】知识分享——设计计算器的UI界面
Java毕业设计
移动应用开发做登录界面(app手机登录界面)
花店管理系统
038基于深度学习的花卉自动识别pyqt界面
基于深度学习的花卉检测与识别系统(YOLOv5清新界面版,Python代码)
使用java编写一只玫瑰花
揭秘UI设计:软件界面摄影艺术与实用技巧
网址: 【Java学习笔记】41:学习用JFrame制作界面(两个界面空壳) https://m.huajiangbk.com/newsview702083.html
上一篇: 关注消防珍爱生命手抄报设计 |
下一篇: vue dialog样式 |