Java ATW和Swing开发全面指南

news/2025/3/29 17:48:39/

Java是一种具有广泛应用的计算机编程语言,它有着广泛的跨平台能力,深受程序员喜爱。ATW和Swing是Java中两个重要的开发框架,可以使Java的界面设计更加优美、易用,同时提高开发效率。

本指南将为大家详细介绍Java ATW和Swing开发,带你领略不一样的Java编程之美。

一、ATW开发框架

ATW是Java ATW(Abstract Window Toolkit)的缩写,是Java基础类库中的一个重要模块,它提供了许多GUI(图形用户界面)组件,包括按钮、文本框、下拉列表等,可以帮助Java开发人员轻松制作复杂的GUI界面。

示例:窗口制作

下面我们来制作一个简单的窗口程序,代码如下:
 

import java.awt.*;
public class MyWindow extends Frame{
public MyWindow(){
setTitle("我的窗口!");
setSize(400,200);
setLocation(500,300);
setVisible(true);
}public static void main(String args[]){
new MyWindow();
}
}


上述代码创建了Frame类的子类MyWindow,在MyWindow的构造函数中设置了窗口的标题、大小和位置,并使用setVisible方法将其显示在屏幕上。

运行该程序后会看到一个简单的窗口界面,证明ATW框架可以帮助我们轻松开发各种窗口应用程序。

二、Swing开发框架

Swing是Java编程中的又一个重要开发框架,它的主要作用是提供一组丰富的组件,用以构建GUI界面,在和AWT一起使用时,可以实现更加复杂和美观的图形界面。

示例:复选框制作

下面我们以制作一个复选框为例介绍如何使用Swing框架:
 

import javax.swing.*;
public class MyCheckBox extends JFrame{
JCheckBox cb;
MyCheckBox(){
cb = new JCheckBox("我同意",true);
cb.setBounds(100,100,100,50);
add(cb);
setSize(400,400);
setLayout(null);
setVisible(true);
}public static void main(String[] args) {
new MyCheckBox();
}
}



上述代码中,我们通过继承JFrame类并在构造函数中添加一个JCheckBox组件来创建了一个带有单选框的窗口界面。其中JCheckBox类表示一个复选框,其构造函数中的两个参数分别表示复选框的标题和默认选中状态。

三、ATW和Swing组合使用

ATW和Swing开发框架可以组合使用,以实现更加丰富和优美的GUI界面,下面我们以一个实例来演示:

示例:ATW和Swing配合制作计算器

我们通过ATW和Swing组合来制作一个简单的计算器程序:
 

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MyCalculator extends JFrame implements ActionListener{
JTextField tf;
JButton b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,bdot,bmul,bdiv,badd,bsub,beq,bclr;
double num1=0,num2=0,result=0;
char operator;MyCalculator() {
tf=new JTextField();
tf.setBounds(30,10,390,40);
tf.setEditable(false);
add(tf);b1=new JButton("1");
b1.setBounds(30,70,50,50);
add(b1);b2=new JButton("2");
b2.setBounds(90,70,50,50);
add(b2);b3=new JButton("3");
b3.setBounds(150,70,50,50);
add(b3);b4=new JButton("4");
b4.setBounds(30,130,50,50);
add(b4);b5=new JButton("5");
b5.setBounds(90,130,50,50);
add(b5);b6=new JButton("6");
b6.setBounds(150,130,50,50);
add(b6);b7=new JButton("7");
b7.setBounds(30,190,50,50);
add(b7);b8=new JButton("8");
b8.setBounds(90,190,50,50);
add(b8);b9=new JButton("9");
b9.setBounds(150,190,50,50);
add(b9);b0=new JButton("0");
b0.setBounds(90,250,50,50);
add(b0);bdot=new JButton(".");
bdot.setBounds(150,250,50,50);
add(bdot);badd=new JButton("+");
badd.setBounds(240,70,70,50);
add(badd);bsub=new JButton("-");
bsub.setBounds(240,130,70,50);
add(bsub);bmul=new JButton("*");
bmul.setBounds(240,190,70,50);
add(bmul);bdiv=new JButton("/");
bdiv.setBounds(240,250,70,50);
add(bdiv);beq=new JButton("=");
beq.setBounds(150,310,160,50);
add(beq);bclr=new JButton("清除");
bclr.setBounds(30,310,100,50);
add(bclr);b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);
b0.addActionListener(this);
bdot.addActionListener(this);
badd.addActionListener(this);
bsub.addActionListener(this);
bmul.addActionListener(this);
bdiv.addActionListener(this);
beq.addActionListener(this);
bclr.addActionListener(this);setLayout(null);
setVisible(true);
setSize(450,450);
}public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b1) tf.setText(tf.getText().concat("1"));
if(e.getSource()==b2) tf.setText(tf.getText().concat("2"));
if(e.getSource()==b3) tf.setText(tf.getText().concat("3"));
if(e.getSource()==b4) tf.setText(tf.getText().concat("4"));
if(e.getSource()==b5) tf.setText(tf.getText().concat("5"));
if(e.getSource()==b6) tf.setText(tf.getText().concat("6"));
if(e.getSource()==b7) tf.setText(tf.getText().concat("7"));
if(e.getSource()==b8) tf.setText(tf.getText().concat("8"));
if(e.getSource()==b9) tf.setText(tf.getText().concat("9"));
if(e.getSource()==b0) tf.setText(tf.getText().concat("0"));
if(e.getSource()==bdot) tf.setText(tf.getText().concat("."));
if(e.getSource()==badd)
{
num1=Double.parseDouble(tf.getText());
operator='+';
tf.setText("");
}
if(e.getSource()==bsub)
{
num1=Double.parseDouble(tf.getText());
operator='-';
tf.setText("");
}
if(e.getSource()==bmul)
{
num1=Double.parseDouble(tf.getText());
operator='*';
tf.setText("");
}
if(e.getSource()==bdiv)
{
num1=Double.parseDouble(tf.getText());
operator='/';
tf.setText("");
}
if(e.getSource()==beq)
{
num2=Double.parseDouble(tf.getText());
switch(operator)
{
case '+': result=num1+num2;
break;
case '-': result=num1-num2;
break;
case '*': result=num1*num2;
break;
case '/': result=num1/num2;
break;
}
tf.setText(""+result);
}
if(e.getSource()==bclr)
{
tf.setText("");
}
}public static void main(String[] args) {
new MyCalculator();
}
}


上述代码中,我们创建了一个MyCalculator类,在构造函数中添加各种Swing组件,包括JTextField、JButton等,通过ATW的布局机制使它们以美观的方式排列在UI界面上。同时,我们在窗口中添加了各种监听器用于监听和处理用户操作事件,比如点击数字按钮、运算符按钮等,以及计算结果的显示。

最终,我们成功地实现了一个简单的计算器程序,证明了ATW和Swing的双重组合可以实现极为复杂和美观的GUI应用程序。


http://www.ppmy.cn/news/58124.html

相关文章

ubuntu22.04安装与配置

目录 一、环境及下载 iso下载 VM配置 二、虚拟机与环境配置 虚拟机开始后的配置 一些工具配置 参考: VMware Workstation Pro 文档 一、环境及下载 iso下载 Download Ubuntu Desktop | Download | Ubuntu 新出了23但是偶数年份稳定支持,所以我…

人群计数传统方法:object detection, regression-based

数据标注方式: (1)人很少、人很大的时候用bounding box,把人从头到脚都框进长方形方框内,这个方框只用记录三个点的坐标,左下、左上、右下;测试集预测的时候,除了点的坐标还要输出这…

微信小程序实现订阅消息功能(Node服务器篇)

在上一篇内容当中在微信小程序中实现订阅消息功能,都在客户端(小程序)中来实现的,在客户端中模拟了服务器端来进行发送订阅消息的功能,那么本篇就将上一篇内容中仅在客户端中实现发送订阅消息功能进行一个分离,使用 Node.js 搭载后…

【代码随想录】刷题Day11

1.栈解决括号判断问题 20. 有效的括号 1.由于最先的左类括号是最后被判断的,所以我们使用的是栈来判断 2.如果碰到左类括号,那就直接入栈 3.如果碰到右类括号,如果栈中是空的,那么说明没有括号和它对应,直接返回false…

动态规划 --- 电线布设

动态规划 — 电线布设 题目描述 说是话,刚看到也是很懵逼,不想交子集是什么?乱七八糟的连线。 其实仔细想想后,觉得题目应该是说给定了这些点的连接端点,然后从他给的连线中选择出不想交的且条数最多的连线&#x…

「SQL面试题库」 No_53 项目员工II

🍅 1、专栏介绍 「SQL面试题库」是由 不是西红柿 发起,全员免费参与的SQL学习活动。我每天发布1道SQL面试真题,从简单到困难,涵盖所有SQL知识点,我敢保证只要做完这100道题,不仅能轻松搞定面试&#xff0…

KBO的选秀会有哪些规定和流程`棒球7号位

KBO(韩国职业棒球联盟)的选秀会有以下规定和流程: 1. 选秀对象:KBO的选秀会主要面向年满18岁及以上的高中和大学生,以及海外球员和自由球员。KBO的球队可以在选秀会中挑选所需的球员,每个球队有一定数量的选…

Mybatis关联查询【附实战案例】

目录 相关导读 一、Mybatis一对一关联查询 1. 新增持久层接口方法 2. 新增映射文件对应的标签 3. 新增测试方法 4. 运行效果 二、Mybatis一对多关联查询 1. 新增持久层接口方法 2. 新增映射文件对应的标签 3. 新增测试方法 4. 运行效果 三、Mybatis多对多关联查询 …