JAVA GUI入門
用JAVA GUI制作一個簡單計數器
簡介
功能:實現加減乘除計算功能和復位功能
這里我所設計的簡單計算器,計算加減乘除兩個運算數類型為int
如果要計算小數,只需改動一下x,y,z的類型變為double以及字符串的轉化為Double類型,同時需要添加一個JButton(".")按鈕,代表小數點
若要添加刪除文本框的一個字符,可設置一個JButton("<-")按鈕,防止我們點擊按鈕點錯,該按鈕的注冊監聽窗口需要改寫text文本框字符串,刪除最后一位的操作,需要用到java的substring函數,可寫為:text=text.substring(0,text.length()-1)
,然后調用JTextField的setText()方法
JAVA代碼
package javaproject;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class myframe{
public int x=0,y=0,result=0;//兩個運算的數以及這兩個數進行運算的結果
public JTextField jf1=new JTextField("0",15);
public String text="";//獲取文本框字符串
public String operator="";//操作符
JFrame jframe;//容器
Container container;
JButton b0,b1,b2,b3,b4,b5,b6,b7,b8,b9;//數字按鈕
JButton j1,j2,j3,j4;//加減乘除按鈕
JButton x1,x2,x3;//等於和復位按鈕
JPanel jpanel1,jpanel2;//2個面板
public class windowclose extends WindowAdapter
{
public void windowClosing(WindowEvent we)
{
System.exit(0);
}
}
/*初始化*/
public myframe()
{
jframe=new JFrame("簡單計算器");
jframe.setResizable(false);
jframe.setBounds(200, 200, 200, 200);
container=jframe.getContentPane();//添加組件
jpanel1=new JPanel();
jpanel2=new JPanel();
jframe.addWindowListener(new windowclose());
//數字按鈕
b0=new JButton("0");b1=new JButton("1");b2=new JButton("2");
b3=new JButton("3");b4=new JButton("4");b5=new JButton("5");
b6=new JButton("6");b7=new JButton("7");b8=new JButton("8");
b9=new JButton("9");
//加減乘除按鈕
j1=new JButton("+");j2=new JButton("-");
j1.setForeground(Color.red);j2.setForeground(Color.red);
j3=new JButton("*");j4=new JButton("/");
j3.setForeground(Color.red);j4.setForeground(Color.red);
//等於復位按鈕
x1=new JButton("C");x2=new JButton("=");
x2.setForeground(Color.red);
//添加組件
//第一個panel
jpanel1.add(jf1);
jf1.setHorizontalAlignment(jf1.RIGHT);//右對齊
//第二個panel
jpanel2.setLayout(new GridLayout(4,4));
jpanel2.add(b0); jpanel2.add(b1);jpanel2.add(b2); jpanel2.add(j1);
jpanel2.add(b3); jpanel2.add(b4);jpanel2.add(b5); jpanel2.add(j2);
jpanel2.add(b6); jpanel2.add(b7);jpanel2.add(b8); jpanel2.add(j3);
jpanel2.add(b9); jpanel2.add(x1);jpanel2.add(x2); jpanel2.add(j4);
container.add(jpanel1,BorderLayout.NORTH);
container.add(jpanel2,BorderLayout.SOUTH);
jframe.setVisible(true);
/*添加監聽窗口*/
//數字按鈕監聽窗口
numberadapter number=new numberadapter();
b0.addActionListener(number);b1.addActionListener(number);b2.addActionListener(number);
b3.addActionListener(number);b4.addActionListener(number);b5.addActionListener(number);
b6.addActionListener(number);b7.addActionListener(number);b8.addActionListener(number);
b9.addActionListener(number);
//復位監聽窗口
C fuwei=new C();
x1.addActionListener(fuwei);
//運算監聽窗口
Oper op=new Oper();
j1.addActionListener(op);j2.addActionListener(op);
x2.addActionListener(op);j3.addActionListener(op);
j4.addActionListener(op);
}
/*注冊監聽器*/
//注冊數字監聽器
public class numberadapter implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
JButton button=(JButton)e.getSource();
if(text.equals("0")&&button.getLabel().equals("0")){
jf1.setText("0");
}
else{
text+=button.getLabel();
jf1.setText(text);
}
}
}
//注冊復位鍵
public class C implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
jf1.setText("0");
text="";
operator="";
x=0;y=0;result=0;
}
}
//注冊運算按鈕監聽器
public class Oper implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
JButton button=(JButton)e.getSource();
if(button.getLabel()=="+")
{
operator="+";
x=Integer.parseInt(jf1.getText());
jf1.setText("0");
text="";
}
else if(button.getLabel()=="-")
{
operator="-";
x=Integer.parseInt(jf1.getText());
jf1.setText("0");
text="";
}
else if(button.getLabel()=="*")
{
operator="*";
x=Integer.parseInt(jf1.getText());
jf1.setText("0");
text="";
}
else if(button.getLabel()=="/")
{
operator="/";
x=Integer.parseInt(jf1.getText());
jf1.setText("0");
text="";
}
else if(button.getLabel()=="=")
{
if(operator=="+") {
y=Integer.parseInt(jf1.getText());
text="";
result=x+y;
jf1.setText(String.valueOf(result));
}
else if(operator=="-")
{
y=Integer.parseInt(jf1.getText());
text="";
result=x-y;
jf1.setText(String.valueOf(result));
}
else if(operator=="*")
{
y=Integer.parseInt(jf1.getText());
text="";
result=x*y;
jf1.setText(String.valueOf(result));
}
else if(operator=="/")
{
y=Integer.parseInt(jf1.getText());
text="";
if(y==0) {jf1.setText("Math Error");}
else {
result=x/y;
jf1.setText(String.valueOf(result));
}
}
}
}
}
}
/*主main類*/
public static void main(String args[])
{
myframe m=new myframe();
}
實現效果
1.計算10*10
2.計算4000-2100
3.計算5/0
5/0錯誤,可使用JAVA異常處理機制