Swing is a GUI widget toolkit for Java.[1] It is part of Oracle’s Java Foundation Classes (JFC) – an API for providing a graphical user interface (GUI) for Java programs.
swing就是一個寫界面的Java工具包,跟delphi很像,最近寫了做了一點簡單的東西,整理一下。
代碼過幾天再貼吧,免得professor在網上查重複,把我的assignment打成cheating。
計算器
最終結果:
1. 新建對象,所需要的container,button(數字和運算符),panel,textfield(設置爲只讀)
2. 添加容器到框架上,將panel添加到container,再將button,textfield加到panel上面。
3. 添加button,text field事件。
注意:JFrame用來做主頁面框架也可以用來做頂級窗體,要想把控件放在該界面中,必須把控件放在JPanel中,然後再把JPanel放在JFrame中,JPanel作爲一個容器使用。
Jpanel是一個靜態控制組件,可以用來顯示一行靜態信息,不能接受用戶的輸入。它必須放在象JFrame這樣的頂級窗口上才能輸出。
JFrame是最底層,JPanel是置於其面上,同一個界面只有一個JFrame,一個JFrame可以放多個JPanel。
創建對象:
JTextField l = new JTextField(16);
JPanel p = new JPanel();
Container c = new Container();
Font f = new Font("Times",Font.BOLD,44); //顯示計算結果的字體
Container c = getContentPane(); // JFrame 對象中不能直接添加 AWT 或者 Swing 組件,這裏用getContentPane()方法獲得JFrame的內容面板,再對其加入組件
//另一種JFrame添加組件的方式是建立一個Jpanel或JDesktopPane之類的中間容器,把組件添加到容器中
添加控件
l.setFont(f); //添加字體格式
l.setEditable(false); //計算器顯示結果應該是不可編輯的
c.add(BorderLayout.CENTER,p); //添加JPanel到container
c.add(l,BorderLayout.NORTH); //添加JTextField到JPanel
p.setLayout(new GridLayout(4,4,1,1)); //GridLayout(int rows, int cols, int hgap, int vgap)
//創建具有指定行數和列數的網格佈局。
//rows - 該 rows 具有表示任意行數的值
//cols - 該 cols 具有表示任意列數的值
//hgap - 水平間距
//vgap - 垂直間距
for(int i=0;i<operand.length;i++) {
JButton b = new JButton(operand[i]+"");
b.addActionListener(new MyActionListener()); //添加監聽事件
p.add(b);
}
添加事件
對於運算符運算,這裏使用棧進行處理。首先將第一個輸入數字進棧,然後判別第二個輸入的運算符如果爲“+”或者“-”,與下一個輸入數字進行相應處理。
if(compute[i].equals("+")) {
stack.pop();
stack.push(Double.parseDouble(compute[i+1]));}
if(compute[i].equals("-"))
stack.push(-Double.parseDouble(compute[i+1]));
if(compute[i].equals("X")) {
Double re = stack.peek();
stack.pop();
stack.push(re*Double.parseDouble(compute[i+1]));
}
if(compute[i].equals("/")) {
double divider = Double.parseDouble(compute[i+1]);
Double re = stack.peek();
stack.pop();
stack.push(re/divider);
}
最後構建JFrame
my_cal cal = new my_cal(Color.BLACK,
Color.GREEN,400,400);