【Java学习笔记】41:学习用JFrame制作界面(两个界面空壳)
来源:互联网 发布:开源crm软件 编辑:程序博客网 时间:2024/04/29 21:22
前面虽然做出了那个棋盘覆盖的可视化,但是也是零散地查了很多方法,还是要系统的学习一下制作界面。
顶层容器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(); }}
下面这个例子要特别注意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(); }}
阅读全文
0 0
- 【Java学习笔记】41:学习用JFrame制作界面(两个界面空壳)
- 学习用PS美化软件界面
- 改变Java JFrame界面外观
- iOS学习用代码写界面,不用ib
- java---jframe带操控界面的应用
- 学习vc制作界面
- 学习制作GUI界面
- Java Swing界面制作
- Java语言制作界面
- java制作输入界面
- java版qq设计与制作:点对点通信 基于JFrame的界面和SOCKET多线程技术 求指正!!!
- BCB学习笔记(1)-界面制作
- unity3d学习笔记(八)--NGUI制作游戏界面
- unity3d学习笔记(八)--NGUI制作游戏界面
- xblock-sdk学习笔记之制作studio界面
- 安卓学习笔记之制作ViewPager欢迎界面
- Java图形图像界面等学习笔记
- Java学习笔记03 俄罗斯方块界面
- PAT乙级1073. 多选题常见计分法(20)
- ThinkPHP5 如何隐藏接口里面的index.php
- Concurrency Programming Guide
- 1、C/C++程序设计
- 第五周周末总结
- 【Java学习笔记】41:学习用JFrame制作界面(两个界面空壳)
- 蓝桥杯 PASCAL三角 算法提高 c++_ch03_02
- 进程IPC---信号
- jQuery DOM操作之属性操作
- 手游测试知识点
- python startswith和endswith
- Express 获取参数的三种方法
- PAT乙级1074. 宇宙无敌加法器(20)
- C语言实验——Hello World!