Java基础-GUI入门-Swing详解
3.Swing
3.1、窗口&面板
代码:
package com.edwin.lesson04;
import javax.swing.*;
import java.awt.*;
/*** @author EdwinD* @create 2020.08.19 上午 08:31* @desc Swing**/
public class JFrameDemo1 {public static void main(String[] args) {new JFrameDemo1().init();}
// init()初始化。public void init(){JFrame jFrame = new JFrame("这是我们的JFrame窗口。");jFrame.setVisible(true);jFrame.setBackground(Color.BLUE);jFrame.setBounds(377, 377, 277, 277);// 设置文字。 JLabelJLabel jLabel = new JLabel("Welcome to EdwinD's Way.");jFrame.add(jLabel);// 关闭事件jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}
}
输出:
框框2:标签居中。
package com.edwin.lesson04;
import javax.swing.*;
import java.awt.*;
/*** @author EdwinD* @create 2020.08.19 上午 09:05* @desc Swing**/
public class JFrameDemo2 {public static void main(String[] args) {MyJFrame2 myJFrame2 = new MyJFrame2();myJFrame2.setTitle("这是我们的JFrame窗口2.0");myJFrame2.init();}
}
class MyJFrame2 extends JFrame {public void init(){setBounds(377, 377, 277, 277);setVisible(true);JLabel jLabel = new JLabel("Welcome to EdwinD's Way-2.0.");this.add(jLabel);
// label居中,设置水平对齐jLabel.setHorizontalAlignment(SwingConstants.CENTER);
// 获得一个容器,Container contentPane = this.getContentPane();contentPane.setBackground(new Color(77,77,77));
// 关闭事件setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}
}
输出:
3.2、弹窗
代码:
package com.edwin.lesson04;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/*** @author EdwinD* @create 2020.08.19 上午 09:46* @desc 弹窗**/
//主窗口
public class DialogDemo1 extends JFrame {public static void main(String[] args) {new DialogDemo1();}public DialogDemo1() {this.setVisible(true);this.setBounds(277, 277, 577, 577);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);// JFrame 存放东西,容器Container container = this.getContentPane();
// 绝对布局container.setLayout(null);
// 按钮JButton jButton = new JButton("弹窗显灵!");jButton.setBounds(100, 100, 100, 70);
// 点击此按钮,会有弹窗。jButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// 弹窗new MyDialogDemo();}});container.add(jButton);}
}//弹窗
class MyDialogDemo extends JDialog {public MyDialogDemo() {this.setVisible(true);this.setBackground(Color.BLACK);this.setBounds(100, 100, 300, 200);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);Container contentPane = this.getContentPane();contentPane.setLayout(null);contentPane.add(new Label("跟着老秦学Java"));}
}
输出:
3.3、标签
Label
new JLabel("……");
图标’s Icon
代码:
package com.edwin.lesson04;
import javax.swing.*;
import java.awt.*;
/*** @author EdwinD* @create 2020.08.19 上午 10:48* @desc 标签。图标需要实现类,Frame继承等。**/
public class IconDemo1 extends JFrame implements Icon {private int width;private int height;public static void main(String[] args) {new IconDemo1().init();}//无参构造public IconDemo1() {}//有参构造public IconDemo1(int width, int height) {this.width = width;this.height = height;}public void init() {IconDemo1 iconDemo1 = new IconDemo1(17, 17);JLabel label = new JLabel("icontest", iconDemo1, SwingConstants.CENTER);Container container = getContentPane();container.add(label);this.setVisible(true);this.setBounds(277, 277, 677, 677);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}@Overridepublic void paintIcon(Component c, Graphics g, int x, int y) {g.fillOval(x, y, width, height);}@Overridepublic int getIconWidth() {return this.width;}@Overridepublic int getIconHeight() {return this.height;}
}
输出:
图中的小点点,就是我们创造的图标。
2.0
图片’s Icon
代码:
package com.edwin.lesson04;
import javax.swing.*;
import java.awt.*;
import java.net.URL;
/*** @author EdwinD* @create 2020.08.19 上午 11:17* @desc 图片显示**/
public class ImageIconDemo extends JFrame{public static void main(String[] args) {new ImageIconDemo();}public ImageIconDemo() {// 获取图片的地址URL url = ImageIconDemo.class.getResource("Study.jpg");
// label作为承载图片的载体。JLabel label = new JLabel("图片旁边的小标签");
// 注意命名,不要和关键词重合。ImageIcon imageIcon = new ImageIcon(url);label.setIcon(imageIcon);label.setHorizontalAlignment(SwingConstants.CENTER);Container container = getContentPane();container.add(label);setVisible(true);setBounds(277, 277, 877, 877);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}
}
输出:
注:
由于IDEA存在缓存机制,有可能在第一次的编译过程中会出现空指针异常现象(ImageIcon imageIcon = new ImageIcon(url);),再更改了代码后依旧是无法正常运转,建议此时进行重启。!!!。!!!
3.4、面板
JPanel
试用Scroll面板,带滚轮,可伸缩。
代码:
package com.edwin.lesson05;import javax.swing.*;
import java.awt.*;/*** @author EdwinD* @create 2020.08.19 下午 05:29* @desc**/
public class JScrollDemo extends JFrame {public static void main(String[] args) {new JScrollDemo();}public JScrollDemo() {Container container = this.getContentPane();// 文本域JTextArea textArea = new JTextArea();textArea.setText("Welcome to EdwinD's Java way.It's really a long and hard way for us to go." +"But we must hand on it and try our best to do.");
// Scroll面板,带滚轮,可伸缩。JScrollPane scrollPane = new JScrollPane(textArea);container.add(scrollPane);this.setVisible(true);this.setBounds(277, 277, 300, 300);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}
}
输出:
3.5、按钮
图片按钮:
将按钮的内容设置为一个图片,点击后是按钮的效果:
package com.edwin.lesson05;
import javax.swing.*;
import java.awt.*;
import java.net.URL;
/*** @author EdwinD* @create 2020.08.19 下午 05:47* @desc 按钮**/
public class JButton1 extends JFrame {public static void main(String[] args) {new JButton1();}public JButton1() {Container container = this.getContentPane();
// 将一个图片,变为图标URL url = JButton1.class.getResource("Study.jpg");Icon icon = new ImageIcon(url);// 把图片放在按钮上JButton button = new JButton();button.setIcon(icon);button.setToolTipText("图片按钮");// addcontainer.add(button);this.setVisible(true);this.setBounds(277, 277, 500, 500);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}
}
输出:
- 单选按钮
多个选项只能选取一个,按组进行分类,一个组选出来一个。
代码:
package com.edwin.lesson05;
import javax.swing.*;
import java.awt.*;
import java.net.URL;
/*** @author EdwinD* @create 2020.08.19 下午 06:05* @desc 单选框按钮**/
public class JButton2 extends JFrame {public static void main(String[] args) {new JButton2();}public JButton2() {Container container = this.getContentPane();
// 单选框JRadioButton radioButton1 = new JRadioButton("JRadioButton1");JRadioButton radioButton2 = new JRadioButton("JRadioButton2");JRadioButton radioButton3 = new JRadioButton("JRadioButton3");// 由于单选框只能选择一个,所以说我们采取“分组”的方法,一个组内只有一个可以被选中ButtonGroup group = new ButtonGroup();group.add(radioButton1);group.add(radioButton2);group.add(radioButton3);container.add(radioButton1, BorderLayout.NORTH);container.add(radioButton2, BorderLayout.CENTER);container.add(radioButton3, BorderLayout.SOUTH);this.setVisible(true);this.setBounds(277, 277, 500, 500);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}
}
输出:
- 复选按钮
每个选项单独成组,可以一次性选择多个按钮内容。
代码:
package com.edwin.lesson05;
import javax.swing.*;
import java.awt.*;
/*** @author EdwinD* @create 2020.08.19 下午 06:10* @desc 多选框**/
public class JButton3 extends JFrame {public static void main(String[] args) {new JButton3();}public JButton3() {Container container = this.getContentPane();
// 多选框JCheckBox checkBox1 = new JCheckBox("checkBox1");JCheckBox checkBox2 = new JCheckBox("checkBox2");container.add(checkBox1, BorderLayout.NORTH);container.add(checkBox2, BorderLayout.SOUTH);this.setVisible(true);this.setBounds(277, 277, 500, 500);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}
}
输出:
3.6、列表
- 下拉框
代码:
package com.edwin.lesson6;
import javax.swing.*;
import java.awt.*;
/*** @author EdwinD* @create 2020.08.19 下午 06:27* @desc 下拉框**/
public class TextCombobox1 extends JFrame {public static void main(String[] args) {new TextCombobox1();}public TextCombobox1() {Container container = this.getContentPane();JComboBox status = new JComboBox();status.addItem("起始默认字");status.addItem("正在热映");status.addItem("即将上映");status.addItem("已下架");container.add(status);this.setVisible(true);this.setBounds(277, 277, 500, 500);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}
}
输出:
- 列表框
应用场景:
- 填写信息时选择地区,或者一些单选项目。
- 展示列表信息,一般是动态扩容的。
代码:
package com.edwin.lesson6;
import javax.swing.*;
import java.awt.*;
import java.util.Vector;
/*** @author EdwinD* @create 2020.08.19 下午 06:27* @desc 下拉框**/
public class TextCombobox1 extends JFrame {public static void main(String[] args) {new TextCombobox1();}public TextCombobox1() {Container container = this.getContentPane();// 生成列表内容String[] content = {"7", "77", "777"};Vector vector = new Vector();vector.add("Alita");vector.add("Jack");vector.add("Toney");// 列表中需要放入的内容JList jList1 = new JList(content);JList jList2 = new JList(vector);container.add(jList1);container.add(jList2);this.setVisible(true);this.setBounds(277, 277, 500, 500);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}
}
输出:
3.7、文本框
- 文本框
代码:
package com.edwin.lesson6;
import javax.swing.*;
import java.awt.*;
/*** @author EdwinD* @create 2020.08.19 下午 07:15* @desc 文本框**/
public class TextText1 extends JFrame {public static void main(String[] args) {new TextText1();}public TextText1() {Container container = this.getContentPane();JTextField textField1 = new JTextField("Hello");JTextField textField2 = new JTextField("World!",20);//规定最多20个字符。container.add(textField1,BorderLayout.NORTH);container.add(textField2,BorderLayout.SOUTH);this.setVisible(true);this.setBounds(277, 277, 500, 500);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}
}
输出:
- 密码框
代码:
package com.edwin.lesson6;
import javax.swing.*;
import java.awt.*;
/*** @author EdwinD* @create 2020.08.19 下午 07:20* @desc 密码框**/
public class TextPassword1 extends JFrame {public static void main(String[] args) {new TextPassword1();}public TextPassword1() {Container container = this.getContentPane();JPasswordField passwordField = new JPasswordField();passwordField.setEchoChar('*');container.add(passwordField);this.setVisible(true);this.setBounds(277, 277, 500, 500);setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}
}
输出:
- 文本域
同Lesson5里面的文本域
代码:
package com.edwin.lesson05;
import javax.swing.*;
import java.awt.*;
/*** @author EdwinD* @create 2020.08.19 下午 05:29* @desc**/
public class JScrollDemo extends JFrame {public static void main(String[] args) {new JScrollDemo();}public JScrollDemo() {Container container = this.getContentPane();// 文本域JTextArea textArea = new JTextArea();textArea.setText("Welcome to EdwinD's Java way.It's really a long and hard way for us to go." +"But we must hand on it and try our best to do.");
// Scroll面板JScrollPane scrollPane = new JScrollPane(textArea);container.add(scrollPane);this.setVisible(true);this.setBounds(277, 277, 300, 300);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);}
}
输出:
路漫漫其修远兮,吾将上下而求索。
参考文献
《【狂神说Java】GUI编程入门到游戏实战》
视频链接
2020.08.19
Java基础-GUI入门-Swing详解相关推荐
- Java基础-GUI入门-AWT详解
AWT 2.1.AWT介绍 其包含了很多的类和接口. 元素:窗口,按钮,文本框. Java.awt: 2.2.组件和容器 1.Frame 代码: package com.edwin.lession01 ...
- java基础与案例开发详解 pdf下载_Java基础与案例开发详解(张孝祥) pdf_IT教程网...
资源名称:Java基础与案例开发详解(张孝祥) pdf 第1.2和3章介绍Java环境的安装配置,Java程序的开发过程和Java语言的基础语法. 第4章介绍数组和常用算法的相关知识. 第5章和6章介 ...
- 【Java基础】HashMap原理详解
[Java基础]HashMap原理详解 HashMap的实现 1. 数组 2.线性链表 3.红黑树 3.1概述 3.2性质 4.HashMap扩容死锁 5. BATJ一线大厂技术栈 HashMap的实 ...
- java基础_题库详解
删除线格式 # 1 JDK和JRE有什么区别? JRE:Java Runtime Environment( java 运行时环境).即java程序的运行时环境,包含了 java 虚拟机,java基础类 ...
- 【Java基础】· 集合习题详解
写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...
- Java基础总结之Thymeleaf详解
一.Thymeleaf语法 1.1 变量表达式${-} 1.2 选择变量表达式*{-} 1.3 消息表达式 #{-} 1.4 链接表达式 @{-} 1.5 片段表达式 ~{-} 二.基本使用 2.1 ...
- Java基础篇:内部类详解
目录: 一.内部类的好处: 二.成员内部类: 三.局部内部类: 四.静态内部类: 五.匿名内部类: 六.总结: 内部类:可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个编译时概念 ...
- Java基础三个排序详解_继承粗解语法关键字分析
集合存放数据的容器,存放的数据可以是基本类型也可以是引用类型,数据类型必须一致,存放数据的空间是连续的即地址连续,长度固定 声明数组变量 首先必须声明数组变量,才能在程序中使用数组.下面是声明数组变量 ...
- Java基础之面向对象部分详解
基本概念 面向对象可以说是采用现实模拟的方式来设计和开发程序.比如:1岁的鹦鹉正再说话.那么面向对象的理解就是:需要一只鹦鹉,它具有健康的属性,说话的行为,它现在在说话.程序代码如下: public ...
- Java基础:对象序列化详解
在我们平日开发中,经常让PO类去实现Serializable接口,然后让其可序列化.不过有时我们并不是特别清楚为什么要序列化,特别是对于纯Web项目开发的同学来说,需求环境不一定能用上.下面我简单和大 ...
最新文章
- 解决cocos2dx 3.x 导入cocostudio的ui界面出现错位问题
- 不同系统之间数据的交互
- 颠倒整数的C语言程序,帮忙解决c语言题目1.编写一个程序,用户输入一个小于5位的正整数,把它的各位数字前后颠倒一下,并输出颠倒后的结果。2.编...
- OpenCV形态morphology的实例(附完整代码)
- VBScript - Round Function
- esxi服务器3d性能,ESXi主机性能问题(示例代码)
- mysql堆溢出_为什么这个MySQL触发器会导致堆栈溢出?
- java的注解方式_详解Java注解的实现与使用方法
- 月薪2w的00后女财务,靠这套报表模板征服了老板
- jmeter 计数器_jmeter函数(六)
- SQL Server Update:使用 TOP 限制更新的数据
- Android - 找到当前类的Context
- 开发环境搭建好,也要做镜像
- linux oracle 分号引起大错误
- pic单片机c语言 程序,单片机教程:PIC单片机C语言程序设计(一)
- 锐捷wifi魔盒自动优选服务器,锐捷校园网用python实现自动登录(需要有自己的账号)...
- 7-6 输出上三角队形
- IP-guard全部22个功能模块简介
- Class6:初学数据库之MySQL基础操作
- oracle删除redo 未重启,卸载金山和瑞星后未重启就安装了卡巴,系统进不去了