当前位置:网站首页>GUI编程简介 swing
GUI编程简介 swing
2022-04-23 08:33:00 【季白九月】
文章目录
3、swing

相对AWT图像编程会更高级,JFrame
3.1窗口、面板
package com.zhang.lesson04;
import javax.swing.*;
import java.awt.*;
//init();初始化
public class JFrameDemo {
public void init(){
//顶级窗口
JFrame jf = new JFrame("这是一个JFrame窗口");
jf.setVisible(true);
jf.setBounds(100,100,200,200);
jf.setBackground(Color.pink);//不显示 底色
//设置文字 Jlabel
JLabel label = new JLabel("欢迎来到这里");
jf.add(label);
//容器实例化
//关闭事件
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
//建立一个窗口
new JFrameDemo().init();
}
}

标签居中
package com.zhang.lesson04;
import javax.swing.*;
import java.awt.*;
public class JFrameDemo02 {
public static void main(String[] args) {
new MyJFrame2().init();
}
}
class MyJFrame2 extends JFrame{
public void init(){
JLabel label = new JLabel("欢迎来到这里");
this.add(label);
//让文本标签居中
label.setHorizontalAlignment(SwingConstants.CENTER);
this.setVisible(true);
this.setBounds(10,10,200,300);
//获得容器
Container container = this.getContentPane();
container.setBackground(Color.blue);
}
}

关闭事件
更简便
//关闭事件
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
3.2 弹窗
JDialog,用来被弹出,默认就有关闭事件
警告

原因:已经默认有了弹窗关闭,重复设置了
package com.zhang.lesson04;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//主窗口
public class DialogDemo extends JFrame {
public DialogDemo() {
this.setVisible(true);
this.setSize(700,500);
// this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//JFrame放东西,容器
Container container = this.getContentPane();
//绝对布局
container.setLayout(null);
//按钮
JButton button = new JButton("点击弹出一个对话框");//创建
button.setBounds(30,30,200,50);
//点击这个按钮的时候,弹出一个弹窗
button.addActionListener(new ActionListener() {
//监听器
@Override
public void actionPerformed(ActionEvent e) {
//弹窗
new MyDialogDemo();
}
});
container.add(button);
}
public static void main(String[] args) {
new DialogDemo();
}
}
//弹窗的窗口
class MyDialogDemo extends JDialog{
public MyDialogDemo() {
this.setVisible(true);
this.setBounds(100,100,500,500);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Container container = this.getContentPane();
container.setLayout(null);
container.add(new Label("一起学java"));
}
}

3.3 标签
label
new JLabel("xxx");
ICON
图标
package com.zhang.lesson04;
import javax.swing.*;
import java.awt.*;
//图标,需要实现类,Frame继承
public class IconDemo extends JFrame implements Icon {
private int width;
private int height;
public IconDemo(){
}//无参构造
public IconDemo(int width,int height){
this.width=width;
this.height=height;
}
public void init(){
IconDemo iconDemo = new IconDemo(15, 15);
//图标放在标签上,也可以放在按钮上!
JLabel label = new JLabel("icontest", iconDemo, SwingConstants.CENTER);
Container container = getContentPane();
container.add(label);
this.setVisible(true);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new IconDemo().init();
}
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
g.fillOval(x,y,width,height);
}
@Override
public int getIconWidth() {
return this.width;
}
@Override
public int getIconHeight() {
return this.height;
}
}

图片
package com.zhang.lesson04;
import sun.misc.PostVMInitHook;
import javax.swing.*;
import java.awt.*;
import java.net.URL;
public class ImageIconDemo extends JFrame {
public ImageIconDemo() {
//获取图片的地址
JLabel label = new JLabel("ImageIcon");
URL url = ImageIconDemo.class.getResource("原神.png");
//获取 当前class这个类 下面的同级资源 的 名称文件
ImageIcon imageIcon = new ImageIcon(url);
label.setIcon(imageIcon);
label.setHorizontalAlignment(SwingConstants.CENTER);
Container container = getContentPane();
container.add(label);
setBounds(100,100,200,200);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new ImageIconDemo();
}
}

3.4 面板
JPanel
package com.zhang.lesson05;
import javax.swing.*;
import java.awt.*;
public class JPanelDemo extends JFrame {
public JPanelDemo() {
Container container = this.getContentPane();
container.setLayout(new GridLayout(2,1,10,10));
//后面的参数的意思,每个面板之间的间距
JPanel panel1 = new JPanel(new GridLayout(1,3));
JPanel panel2 = new JPanel(new GridLayout(1,2));
JPanel panel3 = new JPanel(new GridLayout(2,1));
JPanel panel4 = new JPanel(new GridLayout(3,2));
panel1.add(new JButton("1"));
panel1.add(new JButton("1"));
panel1.add(new JButton("1"));
panel2.add(new JButton("2"));
panel2.add(new JButton("2"));
panel3.add(new JButton("3"));
panel3.add(new JButton("3"));
panel4.add(new JButton("4"));
panel4.add(new JButton("4"));
panel4.add(new JButton("4"));
panel4.add(new JButton("4"));
panel4.add(new JButton("4"));
panel4.add(new JButton("4"));
container.add(panel1);
container.add(panel2);
container.add(panel3);
container.add(panel4);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.setVisible(true);
this.setSize(500,500);
}
public static void main(String[] args) {
new JPanelDemo();
}
}

JScrollPanel 下拉框,横拉框的实现
package com.zhang.lesson05;
import javax.swing.*;
import java.awt.*;
public class JScrollDemo extends JFrame {
public JScrollDemo() {
Container container = this.getContentPane();
//文本域
JTextArea textArea = new JTextArea(20, 50);
//每一行只能写20个数字,50列
textArea.setText("欢迎学习java");//设置默认的文本域
//d丢进面板里,面板再丢进 容器里
//Scroll面板
JScrollPane scrollPane = new JScrollPane(textArea);
container.add(scrollPane);//下拉框,横拉框的实现
this.setVisible(true);
this.setBounds(100,100,300,350);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JScrollDemo();
}
}

3.5 按钮
图片按钮
package com.zhang.lesson05;
import javax.swing.*;
import java.awt.*;
import java.net.URL;
public class JButtonDemo01 extends JFrame {
public JButtonDemo01() {
Container container = this.getContentPane();
URL resource = JButtonDemo01.class.getResource("原神.png");
Icon icon=new ImageIcon(resource);//把图片变成图标
//把图标放在按钮上
JButton button = new JButton();
button.setIcon(icon);
button.setToolTipText("图片按钮");//鼠标在上面 会显示文本
//把按钮加在容器上
container.add(button);
this.setVisible(true);
this.setBounds(500,300,260,260);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JButtonDemo01();
}
}

单选按钮 (分组)
package com.zhang.lesson05;
import javax.swing.*;
import java.awt.*;
import java.net.URL;
public class JButtonDemo02 extends JFrame {
public JButtonDemo02() {
Container container = this.getContentPane();
URL resource = JButtonDemo01.class.getResource("原神.png");
Icon icon=new ImageIcon(resource);//把图片变成图标
//单选框
JRadioButton jRadioButton01 = new JRadioButton("JRadioButton01");
JRadioButton jRadioButton02 = new JRadioButton("JRadioButton02");
JRadioButton jRadioButton03 = new JRadioButton("JRadioButton03");
//由于单选框只能选择一个,分成一个组,一个组中只能选一个
ButtonGroup group = new ButtonGroup();
group.add(jRadioButton01);
group.add(jRadioButton02);
group.add(jRadioButton03);
container.add(jRadioButton01,BorderLayout.CENTER);
container.add(jRadioButton02,BorderLayout.NORTH);
container.add(jRadioButton03,BorderLayout.SOUTH);
this.setVisible(true);
this.setBounds(500,300,260,260);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JButtonDemo02();
}
}

复选按钮
package com.zhang.lesson05;
import javax.swing.*;
import java.awt.*;
import java.net.URL;
public class JButtonDemo03 extends JFrame {
public JButtonDemo03() {
Container container = this.getContentPane();
URL resource = JButtonDemo01.class.getResource("原神.png");
Icon icon=new ImageIcon(resource);//把图片变成图标
//多选框
JCheckBox checkBox01 = new JCheckBox("checkBox01");
JCheckBox checkBox02 = new JCheckBox("checkBox02");
container.add(checkBox01,BorderLayout.SOUTH);
container.add(checkBox02,BorderLayout.NORTH);
this.setVisible(true);
this.setBounds(500,300,260,260);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JButtonDemo03();
}
}

3.6 列表
下拉框 JComboBox
package com.zhang.lesson06;
import javax.swing.*;
import java.awt.*;
public class TestComboboxDemo01 extends JFrame {
public TestComboboxDemo01() {
Container container = getContentPane();
JComboBox status = new JComboBox<>();
status.addItem(null);
status.addItem("正在热映");
status.addItem("已下架");
status.addItem("即将上映");
container.add(status);
this.setVisible(true);
this.setSize(500,350);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestComboboxDemo01();
}
}

列表框
应用场景
- 选择地区,或者一些单个选项
- 列表,展示信息,一般是动态扩容
package com.zhang.lesson06;
import javax.swing.*;
import java.awt.*;
import java.util.Vector;
public class TestComboboxDemo02 extends JFrame {
public TestComboboxDemo02() {
Container container = getContentPane();
//生成列表的内容 稀疏数组,压缩数据
// String[] contents={"1","2","3"};
Vector contents = new Vector();
//列表中需要放内容
JList jList = new JList(contents);
contents.add("zhangsan");
contents.add("lisi");
contents.add("wangwu");
container.add(jList);
this.setVisible(true);
this.setSize(500,350);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestComboboxDemo02();
}
}

3.7 文本框
文本框 JTextField
package com.zhang.lesson06;
import javax.swing.*;
import java.awt.*;
import java.util.Vector;
public class TestTextDemo01 extends JFrame {
public TestTextDemo01() {
Container container = getContentPane();
JTextField textField = new JTextField("hello");
JTextField textField2 = new JTextField("world",20);//columns允许最大字符
container.add(textField,BorderLayout.NORTH);
container.add(textField2,BorderLayout.SOUTH);
this.setVisible(true);
this.setSize(500,350);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestTextDemo01();
}
}

密码框 JPasswordField
package com.zhang.lesson06;
import javax.swing.*;
import java.awt.*;
public class TestTextDemo02 extends JFrame {
public TestTextDemo02() {
Container container = getContentPane();
JPasswordField passwordField = new JPasswordField();//默认****
passwordField.setEchoChar('*');
container.add(passwordField);
this.setVisible(true);
this.setSize(500,350);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestTextDemo02();
}
}

文本域 JTextArea
package com.zhang.lesson05;
import javax.swing.*;
import java.awt.*;
public class JScrollDemo extends JFrame {
public JScrollDemo() {
Container container = this.getContentPane();
//文本域
JTextArea textArea = new JTextArea(20, 50);
//每一行只能写20个数字,50列
textArea.setText("欢迎学习java");//设置默认的文本域
//d丢进面板里,面板再丢进 容器里
//Scroll面板
JScrollPane scrollPane = new JScrollPane(textArea);
container.add(scrollPane);//下拉框,横拉框的实现
this.setVisible(true);
this.setBounds(100,100,300,350);
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JScrollDemo();
}
}

版权声明
本文为[季白九月]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_42143701/article/details/124286111
边栏推荐
猜你喜欢

根据字节码获取类的绝对路径

HAL库的RCC简介

Input / output system
![[C语言] 文件操作《一》](/img/89/b19dda13d27e37fedf6736c102245b.png)
[C语言] 文件操作《一》

洋桃電子STM32物聯網入門30步筆記一、HAL庫和標准庫的區別

Goland 调试go使用-大白记录

虚拟线上展会-线上vr展馆实现24h沉浸式看展

跨域配置报错: When allowCredentials is true, allowedOrigins cannot contain the special value “*“

vmware 搭建ES8的常见错误

Noyer électronique stm32 Introduction à l'Internet des objets 30 étapes notes I. différences entre la Bibliothèque Hal et la Bibliothèque standard
随机推荐
Excle plus watermark
SYS_ CONNECT_ BY_ Path (column, 'char') combined with start with connect by prior
增强现实技术是什么?能用在哪些地方?
对li类数组对象随机添加特性,并进行排序
引用传递1
QT compilation qtxlsx Library
Yangtao electronic STM32 Internet of things entry 30 step notes II. Cube ide download, installation, sinicization and setting
Navicat远程连接mysql
ELK生产实践
uni-app和微信小程序中的getCurrentPages()
Qtablewidget header customization and beautification developed by pyqt5 (with source code download)
Protobuf简介
Failed to prepare device for development
HAL库的RCC简介
The annotation is self-defined by implementing the parameter parser handlermethodargumentresolver interface
JVM工具之Arthas使用
一个必看的微信小程序开发指南1-基础知识了解
Failed to convert a NumPy array to a Tensor(Unsupported Object type int)
虚拟线上展会-线上vr展馆实现24h沉浸式看展
【IndexOf】【lastIndexOf】【split】【substring】用法详解