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应用程序。