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详解相关推荐

  1. Java基础-GUI入门-AWT详解

    AWT 2.1.AWT介绍 其包含了很多的类和接口. 元素:窗口,按钮,文本框. Java.awt: 2.2.组件和容器 1.Frame 代码: package com.edwin.lession01 ...

  2. java基础与案例开发详解 pdf下载_Java基础与案例开发详解(张孝祥) pdf_IT教程网...

    资源名称:Java基础与案例开发详解(张孝祥) pdf 第1.2和3章介绍Java环境的安装配置,Java程序的开发过程和Java语言的基础语法. 第4章介绍数组和常用算法的相关知识. 第5章和6章介 ...

  3. 【Java基础】HashMap原理详解

    [Java基础]HashMap原理详解 HashMap的实现 1. 数组 2.线性链表 3.红黑树 3.1概述 3.2性质 4.HashMap扩容死锁 5. BATJ一线大厂技术栈 HashMap的实 ...

  4. java基础_题库详解

    删除线格式 # 1 JDK和JRE有什么区别? JRE:Java Runtime Environment( java 运行时环境).即java程序的运行时环境,包含了 java 虚拟机,java基础类 ...

  5. 【Java基础】· 集合习题详解

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

  6. Java基础总结之Thymeleaf详解

    一.Thymeleaf语法 1.1 变量表达式${-} 1.2 选择变量表达式*{-} 1.3 消息表达式 #{-} 1.4 链接表达式 @{-} 1.5 片段表达式 ~{-} 二.基本使用 2.1 ...

  7. Java基础篇:内部类详解

    目录: 一.内部类的好处: 二.成员内部类: 三.局部内部类: 四.静态内部类: 五.匿名内部类: 六.总结: 内部类:可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个编译时概念 ...

  8. Java基础三个排序详解_继承粗解语法关键字分析

    集合存放数据的容器,存放的数据可以是基本类型也可以是引用类型,数据类型必须一致,存放数据的空间是连续的即地址连续,长度固定 声明数组变量 首先必须声明数组变量,才能在程序中使用数组.下面是声明数组变量 ...

  9. Java基础之面向对象部分详解

    基本概念 面向对象可以说是采用现实模拟的方式来设计和开发程序.比如:1岁的鹦鹉正再说话.那么面向对象的理解就是:需要一只鹦鹉,它具有健康的属性,说话的行为,它现在在说话.程序代码如下: public ...

  10. Java基础:对象序列化详解

    在我们平日开发中,经常让PO类去实现Serializable接口,然后让其可序列化.不过有时我们并不是特别清楚为什么要序列化,特别是对于纯Web项目开发的同学来说,需求环境不一定能用上.下面我简单和大 ...

最新文章

  1. 解决cocos2dx 3.x 导入cocostudio的ui界面出现错位问题
  2. 不同系统之间数据的交互
  3. 颠倒整数的C语言程序,帮忙解决c语言题目1.编写一个程序,用户输入一个小于5位的正整数,把它的各位数字前后颠倒一下,并输出颠倒后的结果。2.编...
  4. OpenCV形态morphology的实例(附完整代码)
  5. VBScript - Round Function
  6. esxi服务器3d性能,ESXi主机性能问题(示例代码)
  7. mysql堆溢出_为什么这个MySQL触发器会导致堆栈溢出?
  8. java的注解方式_详解Java注解的实现与使用方法
  9. 月薪2w的00后女财务,靠这套报表模板征服了老板
  10. jmeter 计数器_jmeter函数(六)
  11. SQL Server Update:使用 TOP 限制更新的数据
  12. Android - 找到当前类的Context
  13. 开发环境搭建好,也要做镜像
  14. linux oracle 分号引起大错误
  15. pic单片机c语言 程序,单片机教程:PIC单片机C语言程序设计(一)
  16. 锐捷wifi魔盒自动优选服务器,锐捷校园网用python实现自动登录(需要有自己的账号)...
  17. 7-6 输出上三角队形
  18. IP-guard全部22个功能模块简介
  19. Class6:初学数据库之MySQL基础操作
  20. oracle删除redo 未重启,卸载金山和瑞星后未重启就安装了卡巴,系统进不去了

热门文章

  1. No provider available from registry
  2. java Doc转Pdf
  3. 2021年中国人工智能市场发展现状
  4. 计算机课程反馈报告怎么写,计算机概论a课程报告范文.doc
  5. 2019裁员潮,测试被裁了能干什么?
  6. 在html中制作多彩照片墙,60个照片墙布置方案 记录浪漫时刻
  7. 向量设计丨导师简介丨客户案例丨商业活动丨跨界合作
  8. JavaWeb笔记——JSPThymeleaf
  9. 信息化建设中的IT规划精要
  10. 关于gopher协议