咚咚咚__Swing

Swing 简介

​ Swing 是一个用于 Java GUI 编程(图形界面设计)的工具包(类库),Swing 使用纯粹的 Java 代码来模拟各种控件(使用 Java 自带的作图函数绘制出各种控件),没有使用本地操作系统的内在方法,所以 Swing 是跨平台的。也正是因为 Swing 的这种特性,人们通常把 Swing 控件称为轻量级控件。

​ 🤨听说swing很丑,很久不更新,没有javaFX好看,而且FX也非常成熟巴拉巴拉,🙄听说的东西都是别人的,自己动手实践实践。

Swing 和 AWT

swingandawt

AWT(Abstract Window Toolkit,抽象窗口工具)是一套早期的 Java GUI 开发工具,Swing 也是在 AWT 的基础上发展起来的。

AWT 的初衷是用来开发小型的图形界面程序,提供的功能较少,诸如剪切板、打印支持、键盘导航、弹出式菜单、滚动窗格等很多重要的功能在 AWT 中都不具备;此外,AWT 发生错误的几率也很高。

Java 官方看到了 AWT 的不足,就开始着手开发新的 GUI 类库,以继续占领 Java GUI 开发的市场,这就是后来的 Swing。

Swing 弥补了 AWT 的不足,并对 AWT 进行了扩充,几乎支持了所有的常用控件和功能,它们不但更加漂亮,而且更加易用,真正实现了“一次编译,到处运行”的承诺。

目前,Swing 已经代替 AWT 成为 Java 图形界面设计的首选,相对于 AWT 来说,Swing 有过之而无不及。

JFrame 窗口

GUI

了解基础语法后写了第一个窗口程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import javax.swing.*;
import java.awt.*;

public class Test extends JFrame {
JLabel j1;
public Test(){
j1=new JLabel("我是Lable");
Container c1=getContentPane();
c1.add(j1);
setTitle("JAVA_Windows");
setSize(500,400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setLocationRelativeTo(null);
}

public static void main(String[] args) {
Test t1=new Test();
}
}

JPanel 面板

JPanel 是一种中间层容器,它能容纳组件并将组件组合在一起,但它本身必须添加到其他容器中使用。JPanel 类的构造方法如下。

  • JPanel():使用默认的布局管理器创建新面板,默认的布局管理器为 FlowLayout。
  • JPanel(LayoutManagerLayout layout):创建指定布局管理器的 JPanel 对象。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import javax.swing.*;
import java.awt.*;

public class Test extends JFrame {
JLabel j1;
JPanel jp;
public Test(){
j1=new JLabel("我是在JP上的Lable");
jp=new JPanel();//默认的布局管理器为 FlowLayout
Container c1=getContentPane();
c1.add(jp);
jp.add(j1);
jp.setBackground(Color.white);
setTitle("JAVA_Windows");
setSize(500,400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setLocationRelativeTo(null);
}

public static void main(String[] args) {
Test t1=new Test();
}
}

CalculatorDemo

🤨忍不住想写点有用的,写个计算器,上演示视频~

第一下回车出结果,第二下回车清空,🙄好像跨度有点大?,从面板到计算器。有时间单独一篇写布局吧。

上代码 写的有点CXK🏀了,不对应该是想的复杂了点,输入一个数记录一个应该就简单好多。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


public class Test extends JFrame {
JPanel P1,P2;
int a=0,b=0,sum=0;
String s2,s;
JTextField j1;
JButton b1,b2,b3,b4;
public Test(){

setLayout(new BorderLayout());
P1=new JPanel();
P1.setLayout(new BorderLayout());
P2=new JPanel();
P2.setLayout(new GridLayout(2,2));
b1=new JButton("1");
b1.addActionListener(new BuListener());
b2=new JButton("+");
b2.addActionListener(new BuListener());
b3=new JButton("2");
b3.addActionListener(new BuListener());
b4=new JButton("-");
b4.addActionListener(new BuListener());
j1=new JTextField(20);
P1.add(j1);
P2.add(b1);
P2.add(b2);
P2.add(b3);
P2.add(b4);
j1.addActionListener(new BuListener());
add(P1,BorderLayout.NORTH);
add(P2,BorderLayout.CENTER);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300,300);
setTitle("Calculater");
setVisible(true);
setResizable(false);
}
public class BuListener implements ActionListener{

@Override
public void actionPerformed(ActionEvent e) {
s=j1.getText();
if(e.getSource()==b1){
j1.setText(s+"1");
}
else if(e.getSource()==b2){
if(a==0 && b==0){
a=Integer.parseInt(s);
s2=s+"+";
j1.setText(s+"+");
}

}
else if(e.getSource()==b3){
j1.setText(s+"2");
}
else if(e.getSource()==b4){
if(a==0 && b==0){
a=Integer.parseInt(s);
s2=s+"-";
j1.setText(s+"-");
}
}
else if(e.getSource()==j1){
if ( a==0 && Integer.parseInt(s)==sum){
sum=0;
j1.setText("");
}
else {
s=s.replace(s2,"");
b=Integer.parseInt(s);
if (s2.charAt(s2.length()-1)=='+'){
j1.setText(Integer.toString(sum=a+b));
}
else {
j1.setText(Integer.toString(sum=a-b));
}
a=0;
b=0;
}

}
}
}

public static void main(String[] args) {
Test t1= new Test();
}
}

还有监听器的好几种用法巴拉巴拉,感觉就这样用还比较舒服。

本文标题:咚咚咚__Swing

文章作者:IceFeng

发布时间:2019年05月04日 - 21:09:49

最后更新:2019年05月28日 - 11:54:28

原始链接:https://www.icefeng.cc/2019/JAVA_1/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

------ 本文结束 ------
0%