Java写一个GUI

Python011

Java写一个GUI,第1张

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import javax.swing.JButton

import javax.swing.JFrame

import javax.swing.JLabel

import javax.swing.JPanel

import javax.swing.JTextField

public class BankAccountViewer {

public static void main(String[] args) {

new BankAccountFrame().setVisible(true)

}

}

class BankAccountFrame extends JFrame implements ActionListener{

BankAccount ba

JTextField tf = new JTextField(6)

JButton bw = new JButton("Withdraw")

JButton bd = new JButton("Deposit")

JLabel la = new JLabel("Amount")

JLabel lb = new JLabel()

public BankAccountFrame() {

ba = new BankAccount()

JPanel p = new JPanel()

p.add(la)

p.add(tf)

p.add(bw)

p.add(bd)

add(p)

lb.setHorizontalAlignment(JLabel.CENTER)

add(lb, BorderLayout.SOUTH)

lb.setText("Balance=" + ba.getBalance())

this.setDefaultCloseOperation(3)

this.pack()

bd.addActionListener(this)

bw.addActionListener(this)

}

@Override

public void actionPerformed(ActionEvent e) {

if (e.getSource() == bw) {

double wi = Double.parseDouble(tf.getText())

ba.withdraw(wi)

lb.setText("Balance=" + ba.getBalance())

lb.setText("Balance=" + ba.getBalance())

lb.setText("Balance=" + ba.getBalance())

}

if (e.getSource() == bd) {

double de = Double.parseDouble(tf.getText())

ba.deposit(de)

lb.setText("Balance=" + ba.getBalance())

}

}

}

class BankAccount {

double balance = 1000

public double getBalance() {

return balance

}

public void deposit(double de) {

balance += de

}

public void withdraw(double wi) {

if (balance >= wi) {

balance -= wi

}

}

}

其实无论在什么平台下,GUI应用程序的基本开发方法都是相似的。一般都包括下面这样四个步骤:

①创建容器

首先要创建一个GUI应用程序,需要创建一个用于容纳所有其它GUI组件元素的载体,Java中称为容器。典型的包括窗口(Window)、框架(Frame/JFrame)、对话框(Dialog/JDialog)、面板(Panel/JPanel)等。只有先创建了这些容器,其它界面元素如按钮(Button/JButton)、标签(Label/JLabel)、文本框(TextField/JTextField)等才有地方放。

②添加组件

为了实现GUI应用程序的功能,为了与用户交换,需要在容器上添加各种组件/控件。这需要根据具体的功能要求来决定用什么组件。例如,如果需要提示信息,可用标签(Label/JLabel)如果需要输入少量文本,可用文本框(TextField/JTextField)如果需要输入较多文本,可用文本区域(TextArea/JTextArea)如果需要输入密码,可用密码域(JPasswordField)等等。

③安排组件

与传统的Windows环境下的GUI软件开发工具不同,为了更好地实现跨平台,Java程序中各组件的位置、大小一般不是以绝对量来衡量,而是以相对量来衡量。例如有时候,程序的组件的位置是按"东/East"、"西/West"、"南/South"、"北/North"、"中 /Center"这种方位来标识的。因此,在组织界面时,除了要考虑所需的组件种类外,还需要考虑如何安排这些组件的位置与大小。这一般是通过设置布局管理器(Layout Manager)及其相关属性来实现的。事实上上述按方位来安排组件就是采用了Java中多种布局管理器里的BorderLayout布局管理器。

④处理事件

为了完成一个GUI应用程序所应具备的功能,除了适当地安排各种组件产生美观的界面外,还需要处理各种界面元素事件,以便真正实现与用户的交换,完成程序的功能。在Java程序中这一般是通过实现适当的事件监听者接口来完成的。比如如果需要响应按钮事件,就需要实现 ActionListener监听者接口如果需要响应窗口事件,就需要实现WindowListener监听者接口。