效果图
参考代码
import javaawt;import javaawtevent;
import javaxswing;
public class KeyFrame extends JFrame implements KeyListener{
JLabel jlkey;
public KeyFrame() {
jlkey = new JLabel("请输入字母或者数字,其他字符不显示");
add(jlkey);
addKeyListener(this);
setLayout(new FlowLayout());
setSize(260, 160);
setTitle("输入");
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new KeyFrame();
}
public void keyTyped(KeyEvent e) {//敲击键盘
c=egetKeyChar();//得到键入的字符
repaint();//重绘
}
public void keyPressed(KeyEvent e) {//按下键盘
// c=egetKeyChar();
// repaint();
}
public void keyReleased(KeyEvent e) {//释放键盘
}
char c ;
@Override
public void paint(Graphics g) {
superpaint(g);
//如果只能显示输入的是字母或者数字,那么需要if判断下
if((c<='Z'&& c>='A')||(c<='z'&&c>='a')||(c<='9'&&c>='0')){// 注意比较的是字符 '9' 和字符'0'
Font font = ggetFont();
gsetColor(ColorBLUE);
gsetFont(new Font(fontgetName(),fontgetStyle(),20));
gdrawString(c+"",100, 100); //绘制
}
}
}
1、Java本身做界面,用到Java Swing(事件+驱动方式)的知识(你可以下个java swing文档看看,一般两三天就可以看完做界面) java的基本知识就可以实现业务层,数据库 *** 作,最简单也是JDBC,也可以使用数据库 *** 作框架(ibatis/hibernate)
package test;
import javaawt;
import javaawtevent;
import javaxswing;
public class Z extends JFrame implements ActionListener, FocusListener {
private String[] total = { "1", "2", "3", "+", "4", "5", "6", "-", "7", "8", "9", "", "0", "", "=", "/" }; // 总数组
private String[] other = { "clear", "delete" }; // 其它功能数组
private String[] symbol = { "+", "-", "", "/" }; // 符号数组
private String multinumber = "0", operator1 = "", exists = "", operator2 = null, s = "";
// multinumber(多位数) operator1(运算符) exists(存在的)
private double d1, d2 = 0;
private int Count = 0;
JPanel jptotal = new JPanel(); // 总面板
JTextField jtexternal = new JTextField("0"); // 外部文本框
JTextField jtinside = new JTextField(); // 内部文本框
JPanel jptop1 = new JPanel(); // 顶部面板1
JPanel jptop2 = new JPanel(); // 顶部面板2
JPanel jpmiddle = new JPanel(); // 中部面板
public Z() {
jptotalsetLayout(new BorderLayout());
// 使用边界布局管理器
jptop1setLayout(new GridLayout(2, 0));
jptop1add(jtexternal);
jptop2setLayout(new GridLayout(0, 2));
for (int i = 0; i < otherlength; i++) {
JButton jbi = new JButton("" + other[i]);
jbisetSize(100, 10);
jptop2add(jbi);
jbiaddActionListener(this);
}
jpmiddlesetLayout(new GridLayout(4, 0));
for (int i = 0; i < totallength; i++) {
JButton jbi = new JButton("" + total[i]);
jpmiddleadd(jbi);
jbiaddActionListener(this);
}
jtexternaladdFocusListener(this);
jtexternaladd(jtinside);
jtinsideaddFocusListener(this);
// 上面三行代码的作用是让文本框不可被选中
jptop1add(jptop2);
jptotaladd(jptop1, "North");
// 以jp1为一个整体,让jp1里面的内容从最上面开始填充
jptotaladd(jpmiddle);
add(jptotal);
setVisible(true);
setSize(500, 500);
thissetLocationRelativeTo(null);
thissetDefaultCloseOperation(EXIT_ON_CLOSE);
}
// ctrl+/ :注释
public void actionPerformed(ActionEvent e) throws ArithmeticException {
try {
String inputing = egetActionCommand();
// 表示获取当前输入的内容
if (inputingequals("")) {
Count++;
}
exists = jtexternalgetText();
if (operator2 != null) {
int k = 0;
for (int i = 0; i < symbollength; i++) {
if (operator2equals(symbol[i])) {
k = k + 1;
}
if (inputingequals(symbol[i])) {
k = k + 1;
}
if (k == 2) {
jtexternalsetText(existssubstring(0, existslength() - 1) + inputing);
operator1 = inputing;
return;
}
// 实现四则运算符不可同时存在,新输入的替换旧的
if (operator2equals(symbol[i]) && inputingequals("")) {
return;
}
// 实现四则运算符和点不可挨着出现(点后面可以出现四则运算符,点前面不可出现)
}
}
if (existsequals("0")) {
if (inputingequals("") || (inputingequals("+")) || (inputingequals("-")) || (inputingequals(""))
|| (inputingequals("/"))) {
jtexternalsetText("0" + inputing);
} else {
jtexternalsetText(inputing);
}
} else {
jtexternalsetText(exists + inputing);
}
// 实现如果0前面没有非0数字的话,那么无论输入多少次0,都只显示一个0,如果输入其它数字,0将会被替换
if ((d1 == 00 || d2 == 00) && inputingequals("=") && !existssubstring(0, 1)equals("0")) {
return;
}
// 实现如果文本框内存在数字,那么输入等号,将打印其本身
if (inputingequals("clear")) {
multinumber = "0";
exists = "";
operator1 = "";
jtexternalsetText("0");
operator2 = null;
d2 = 0;
s = "";
Count = 0;
d1 = 00;
// 实现,当点击clear时,文本框内将被清空至0,所有数据都将还原至初始状态
} else if (inputingequals("delete")) {
if (existslength() <= 1 || sequals("=")) {
jtexternalsetText("0");
multinumber = "0";
exists = "";
operator1 = "";
operator2 = null;
d2 = 0;
s = "";
Count = 0;
d1 = 0;
// 实现,按delete删除刚输入的内容,如果将最后一个数字删除,那么效果同按clear
} else {
if (inputingequals("+") || inputingequals("-") || inputingequals("") || inputingequals("/")) {
Count = 1;
}
jtexternalsetText(existssubstring(0, existslength() - 1));
// 将operator2存储上一次值
operator2 = existssubstring(existslength() - 2, existslength() - 1);
/
实现如果四则运算符后面有数字的话
那么如果此时按删除键
删除之后如果新输入的还是四则运算符话
那么将会将原来的四则运算符替换成新输入的
/
}
} else if (!inputingequals("+") && !inputingequals("-") && !inputingequals("") && !inputingequals("/")
&& !inputingequals("=")) {
// 判断输入是否为数字
if (sequals("=")) {
if (existsequals("除数不能为0") || new Double(exists) == d1) {
if (inputingequals("")) {
jtexternalsetText("0" + inputing);
} else {
jtexternalsetText(inputing);
}
}
s = "";
}
// 实现一次计算完成之后,可以进行新的运算
if (multinumber == null) { // 多位数计算
multinumber = inputing;
} else {
multinumber += inputing;
}
d1 = new Double(multinumber);
if (operator1equals("+")) { // 进行四则运算
if (d2 == 0) {
if (operator1equals("") || operator1equals("/")) {
d2 = 1;
}
}
// 实现,当四则运算符后面没有数字时,那么输入等号后结果将为符号前面的结果,如果符号前面只有一个数字,那么将打印自身
d1 = d1 + d2;
} else if (operator1equals("-")) {
d1 = d2 - d1;
} else if (operator1equals("")) {
d1 = d1 d2;
} else if (operator1equals("/")) {
d1 = d2 / d1;
}
// 利用临时变量f2,实现四则运算
operator2 = inputing;
} else if (!inputingequals("=")) { // [四则运算符] 输入等号后继续进行计算
multinumber = "0";
operator1 = inputing;
d2 = d1;
operator2 = inputing;
s = "";
Count = 0;
// 实现小数运算
} else { // 就是 [=] 得出最终结果
jtexternalsetText("" + d1);
Count = 0;
s = "=";
multinumber = "0";
if (operator2equals("0") && "/"equals(operator1)) {
operator2 = null;
d1 = 0;// 将非法运算值替换成正确值
throw new ArithmeticException();// 指定抛出异常的条件
//赋值计算不抛算数异常,如果想让其抛出,必须指定条件重新抛出异常
} else {
operator1 = inputing;
operator2 = null;
d2 = 0;
} // 计算结果
if (inputingequals("=") && (d1 == 00 || d2 == 00)) {
return;
}
// 实现等号不可重复输入
}
} catch (ArithmeticException e1) {
jtexternalsetText("除数不能为0");
// 指定抛出异常内容
}
}
public static void main(String[] args) {
new Z();
}
public void focusGained(FocusEvent e) {
jtinsiderequestFocus();
// 让焦点聚焦到内部文本框,实现外部文本框的不可聚焦功能
}
public void focusLost(FocusEvent e) {
}
}
以上就是关于JAVA程序设计,使用GUI界面全部的内容,包括:JAVA程序设计,使用GUI界面、Java PC做界面程序,用什么工具、如何在Java中利用图形界面技术设计一个能够完成加、减、乘、除和取余运算的图形用户界面应用程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)