Java GUI程序设计
=====================第一个类=============================
/**
*
* 实现了系统计算器连续按"="和按"+","-","*","/"进行累记运算的模式
*
* */
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class CalculatorFrame extends JFrame {
private JTextField txtDis = new JTextField("0", 16); //显示文本框
private JButton[] btnGrp = new JButton[17]; //17个按钮
private JPanel jpnMain = new JPanel(); //主面板
private JPanel jpnNorth = new JPanel(); //上面板
private JPanel jpnSouth = new JPanel(); //下面板
private double numSaved; //保存的前一个数
private String operator = ""; //保存的运算符号
private String lastPress = ""; //上一次按的按钮("数字","运算符" 或 "等号")
/*构造函数*/
public CalculatorFrame() {
//窗口设置
setTitle("计算器");
setSize(210, 250);
buttonInit(); //按钮初始化
//主面板设置
add(jpnMain);
jpnMain.setLayout(null);
jpnMain.add(jpnNorth);
jpnMain.add(jpnSouth);
jpnMain.add(btnGrp[15]);
btnGrp[15].setBounds(8, 180, 188, 30); //添加“=”按钮
//上面板设置
jpnNorth.setBounds(8, 10, 190, 30);
jpnNorth.add(txtDis);
txtDis.setHorizontalAlignment(JTextField.RIGHT); //设置文本右对齐
txtDis.setEditable(false);
//下面板设置
jpnSouth.setBounds(8, 60, 190, 120);
jpnSouth.setLayout(new GridLayout(4, 4));
addSouthJpn(); //添加17个按钮
//添加监听器
addListener();
}
/*17个按钮显示值初始化*/
public void buttonInit() {
for (int i = 0; i < 10; i++) {
btnGrp[i] = new JButton("" + i);
}
btnGrp[10] = new JButton(".");
btnGrp[11] = new JButton("+");
btnGrp[12] = new JButton("-");
btnGrp[13] = new JButton("*");
btnGrp[14] = new JButton("/");
btnGrp[15] = new JButton("=");
btnGrp[16] = new JButton("C");
for (int i = 0; i < 17; i++) {
btnGrp[i].setFont(new Font("Dialog", Font.PLAIN, 18));
}
}
/*按网格顺序添加除“=”外16个按钮*/
public void addSouthJpn() {
int[] index={7,8,9,14,4,5,6,13,1,2,3,12,0,16,10,11};
for(int i=0;i<index.length;i++){
jpnSouth.add(btnGrp[index[i]]);
}
}
/*给按钮添加监听器*/
public void addListener() {
//给数字按钮添加监听器,btnGrp[10]是"."号
for (int i = 0; i <= 10; i++) {
btnGrp[i].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String button = ( (JButton) e.getSource()).getText();
//如果有运算操作符或文本框数字为0并且按钮不为“。”
if (lastPress == "运算符" || lastPress == "等号"
|| txtDis.getText().equals("0") && button != ".") {
txtDis.setText(""); //清空文本框
}
if (lastPress == "等号") {
operator = ""; //上次按的是=号,这次按数字,清空运算符
}
if (button == "." && txtDis.getText().indexOf(".") != -1) {
} //这次按的是.文本框内已经包含.这种情况什么都不做,防止.重复
else {
txtDis.setText(txtDis.getText() + button); //文本框添加内容
}
lastPress = "数字";
}
});
}
//给运算操作符按钮添加监听器
for (int i = 11; i <= 14; i++) {
btnGrp[i].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (operator != "" && lastPress == "数字") { //运算符不为空并且之前按的是数字
(btnGrp[15].getActionListeners())[0].actionPerformed(e); //手动调用=号的监听响应实现=号功能
}
numSaved = Double.parseDouble(txtDis.getText()); //保存当前文本框的数字
operator = ( (JButton) e.getSource()).getText(); //保存运算操作符
lastPress = "运算符"; //添加运算符标记,下次文本框清空
}
});
}
//给等号按钮添加监听器
btnGrp[15].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
double numNow = Double.parseDouble(txtDis.getText()); //当前文本框的数字
//运算符匹配操作
if (operator.equals("+")) {
txtDis.setText( (numSaved + numNow) + "");
}
else if (operator.equals("-")) {
if (lastPress == "等号") { //累记运算时的算法(一直按等号)
txtDis.setText( (numNow - numSaved) + "");
}
else {
txtDis.setText( (numSaved - numNow) + "");
}
}
else if (operator.equals("*")) {
txtDis.setText( (numSaved * numNow) + "");
}
else if (operator.equals("/")) {
if (lastPress == "等号") { //累记运算时的算法(一直按等号)
txtDis.setText( (numNow / numSaved) + "");
}
else {
txtDis.setText( (numSaved / numNow) + "");
}
}
if (lastPress != "等号") { //是第一次,以后按累记运算
numSaved = numNow; //保存数改为后一个数
}
lastPress = "等号"; //添加运算符标记,下次文本框清空
}
});
//给复位符“C”按钮添加监听器
btnGrp[16].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
txtDis.setText("0");
numSaved = 0;
operator = "";
lastPress = "";
}
});
}
}
=====================第二个类=============================
import javax.swing.*;
public class Test {
public Test() {
CalculatorFrame calframe = new CalculatorFrame(); //新窗口
calframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置关闭
calframe.setLocationRelativeTo(null); //窗口置中
calframe.setVisible(true); //显示窗口
calframe.setDefaultLookAndFeelDecorated(false); //使用windows视感
calframe.setResizable(false); //窗口不可调大小
}
public static void main(String[] args) {
Test test = new Test();
}
}
懒得写代码, 给你说下思路吧, 你创建两个JFrame 其中里面放一个JButton 给按钮添加监听事件,当按钮被点击的时候, 弄一个while循环, 一直new 另一个JFrame, 并且在循环里面每次执行生成随机数,然后设置JFrame的位置等等属性,至于窗口 和不可在进程中关闭好像java实现不了吧,也可能是我技术不行。不太会~
Java GUI程序设计包含哪些要素:界面组件 界面布局 事件处理Java GUI程序设计中事件处理三要素是什么:事件源,事件对象,事件监听器
事件有四种实现方式,它们都是什么:成员内部类、匿名内部类和容器类一般是这三种 另一种我也不知道
白胥托吡: Java GUI程序设计包含哪些要素:界面组件 界面布局 事件处理 Java GUI程序设计中事件处理三要素是什么:事件源,事件对象,事件监听器 事件有四种实现方式,它们都是什么:成员内部类、匿名内部类和容器类一般是这三种 另一种我也不知道
平利县17863382135: 用Java编写一个GUI程序 - ?
白胥托吡: package com.test; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; public class aaa extends JFrame ...
平利县17863382135: 用Java编写一个GUI程序 - ?
白胥托吡: package com.test;import java.awt.FlowLayout;import java.awt.event.ActionEvent;i...
平利县17863382135: Java实现GUI编程基本方法都有那些? - ?
白胥托吡: 其实无论在什么平台下,GUI应用程序的基本开发方法都是相似的.一般都包括下面这样四个步骤:①创建容器首先要创建一个GUI应用程序,需要创建一个用于容纳所有其它GUI组件元素的载体,Java中称为容器.典型的包括窗口(...
平利县17863382135: java的gui程序设计 - ?
白胥托吡: 效果图 参考代e79fa5e98193e59b9ee7ad9431333365653861码//导入swing图形界面开发常用的3个包 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class AddFrame extends JFrame implements ActionListener { JTextField ...
平利县17863382135: java写GUI怎么写最好?用什么工具?界面效果怎样?java的程序可以用其他工具写的GUI吗??
白胥托吡: Java写GUI的当时选择swing了,这些Java后来推出的专门用于展示的处理组件.Java可以用其他工具写GUI,比如用Flex写脚本,最后编译成flash这种非常绚丽哦.
平利县17863382135: JAVA实现GUI程序界面 - ?
白胥托吡: java.awt.* java.awt.event.* javax.swing.*
平利县17863382135: 如何用eclipse编写java gui程序 - ?
白胥托吡: 工具/原料 Eclipse 方法/步骤 依次选择file--New--Project选项 选择java——>java project 在Project name后输入工程名 new——>package New——>Class 以上步骤全部完成后,就可以开始编写程序了.
平利县17863382135: 编写一个Java多线程GUI程序(GUIThread.java),有两个按钮,点击第一个按钮、启动一个线程开始计时,并把 - ?
白胥托吡: 你要的是这个吧:import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.text.DateFormat; import java.util.Date; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; public class GUIThread extends ...