效果图
参考代码
//导入swing图形界面开发常用的3个包import java.awt.*
import java.awt.event.*
import javax.swing.*
public class AddFrame extends JFrame implements ActionListener {
JTextField jtf1, jtf2, jtf3
public AddFrame() {
JPanel jpcenter = new JPanel(new GridLayout(3, 2)) //创建面板,设置布局为3行2列的网格布局
JLabel jl1 = new JLabel("First Number:")
jtf1 = new JTextField()
jpcenter.add(jl1)
jpcenter.add(jtf1)
JLabel jl2 = new JLabel("Second Number:")
jtf2 = new JTextField()
jpcenter.add(jl2)
jpcenter.add(jtf2)
JLabel jl3 = new JLabel("The Sum:")
jtf3 = new JTextField()
jtf3.setBackground(Color.WHITE) // 文本框背景色为白色
jtf3.setEditable(false)// 文本框不许编辑
jpcenter.add(jl3)
jpcenter.add(jtf3)
add(jpcenter,BorderLayout.CENTER)//窗口默认布局为BorderLayout .把jpcenter放到窗口的中间
JButton jbAdd = new JButton("Add")
jbAdd.addActionListener(this)//添加点击事件的处理
add(jbAdd, BorderLayout.SOUTH)//把按钮放到窗口的南面
setTitle("Add Calculator")
setSize(350, 200)
setLocationRelativeTo(null)//窗口居中
setDefaultCloseOperation(EXIT_ON_CLOSE)//点击右上角的关闭按钮时,结束程序
}
//点击按钮时处理该事件
public void actionPerformed(ActionEvent e) {
try {
double num1=Double.parseDouble(jtf1.getText())
double num2=Double.parseDouble(jtf2.getText())
jtf3.setText(num1+num2+"")
}catch (Exception ex) {
//输入了字母汉字,不符合规范的输入时进行提示
JOptionPane.showMessageDialog(this, "输入了错误的字符或者格式,请输入数字", "错误!", JOptionPane.ERROR_MESSAGE)
}
}
public static void main(String[] args) {
new AddFrame().setVisible(true)//创建窗口并可见
}
}
import javax.swing.*import javax.swing.text.*
import java.awt.*
import java.awt.event.*
/**
* @author Hardneedl
*/
final class ButtonDemo extends JFrame {
public String getTitle() {return "ButtonDemo"}
static private final Dimension size = new Dimension(600,400)
public Dimension getPreferredSize() {return size}
public Dimension getMaximumSize() {return size}
public Dimension getMinimumSize() {return size}
public Dimension getSize(){return size}
private class ButtonAction extends AbstractAction{
private JTextComponent t
private String n
private ButtonAction(String name,JTextComponent t) {
super(name)
n=name
this.t=t
}
public void actionPerformed(ActionEvent e) {
t.setText(n)
}
}
private JButton b0,b1
private JTextField t
ButtonDemo() throws HeadlessException {
init()
attachListeners()
doLay()
}
private void init(){
t=new JTextField(20)
b0=new JButton(new ButtonAction("YES",t))
b1=new JButton(new ButtonAction("NO",t))
}
private void attachListeners(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
}
private void doLay(){
Container container = getContentPane()
JPanel p = new JPanel()
p.add(b0)
p.add(b1)
container.add(p,BorderLayout.NORTH)
container.add(t,BorderLayout.SOUTH)
pack()
setVisible(true)
}
public static void main(String...args) {
System.setProperty("swing.defaultlaf","com.sun.java.swing.plaf.windows.WindowsLookAndFeel")
SwingUtilities.invokeLater(
new Runnable(){
public void run() {
new ButtonDemo()
}
}
)
}
}
其实无论在什么平台下,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监听者接口。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)