按钮控件数组实现计算器界面
數(shù)組的應(yīng)用范圍非常廣泛,靈活運(yùn)用可以提高程序的開(kāi)發(fā)效率,減少重復(fù)代碼。例如,本實(shí)例通過(guò)按鈕數(shù)組來(lái)管理界面中的所有按鈕控件,從而使用最少的代碼實(shí)現(xiàn)了模擬的計(jì)算器界面。實(shí)例運(yùn)行效果如圖
本實(shí)例的關(guān)鍵點(diǎn)在于GridLayout布局管理器的應(yīng)用,通過(guò)它可以自動(dòng)完成控件的布局與大小控制;否則,還要單獨(dú)創(chuàng)建控制每個(gè)控件位置與大小的代碼,其代碼復(fù)雜度可想而知。通過(guò)GridLayout布局管理器,只需要指定布局的行列數(shù)量即可。下面介紹GUI如何使用GridLayout布局管理器。 ?創(chuàng)建指定行列數(shù)量的布局管理器 可以在GridLayout類(lèi)的構(gòu)造方法中傳遞兩個(gè)int類(lèi)型的參數(shù),分別指定布局的行數(shù)與列數(shù),其方法聲明如下: public GridLayout(int rows, int cols) 參數(shù)說(shuō)明 rows:布局的行數(shù)。 cols:布局的列數(shù)。 ?設(shè)置容器的布局管理器 創(chuàng)建容器布局管理器后,可以把它添加到某個(gè)容器的layout屬性中,這需要調(diào)用容器的設(shè)置布局管理器的方法來(lái)實(shí)現(xiàn),其語(yǔ)法聲明如下: public void setLayout(LayoutManager mgr) 參數(shù)說(shuō)明 mgr:布局管理器對(duì)象。
在項(xiàng)目中創(chuàng)建ButtonArrayExample窗體類(lèi)。在窗體中添加一個(gè)文本框控件用于模擬計(jì)算器的液晶屏,然后在構(gòu)造方法中設(shè)置窗體標(biāo)題、布局管理器,并創(chuàng)建JButton控件的二維數(shù)組,其中每個(gè)數(shù)組元素都初始化為一個(gè)按鈕控件,同時(shí)再聲明一個(gè)按鈕名稱(chēng)的字符串?dāng)?shù)組,這兩個(gè)數(shù)組共同初始化界面中的所有按鈕控件。代碼如下:
import java.awt.Container; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.UIManager; import javax.swing.JTextField; import java.awt.BorderLayout; import java.awt.Dimension; import javax.swing.SwingConstants;
public class ButtonArrayExample extends JFrame { // 繼承窗體類(lèi)JFrame /** * */ private static final long serialVersionUID = 6626440733001287873L; private JTextField textField;
public static void main(String args[]) {try {UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");} catch (Throwable e) {e.printStackTrace();}ButtonArrayExample frame = new ButtonArrayExample();frame.setVisible(true); // 設(shè)置窗體可見(jiàn),默認(rèn)為不可見(jiàn) }public ButtonArrayExample() {super(); // 繼承父類(lèi)的構(gòu)造方法BorderLayout borderLayout = (BorderLayout) getContentPane().getLayout();borderLayout.setHgap(20);borderLayout.setVgap(10);setTitle("按鈕數(shù)組實(shí)現(xiàn)計(jì)算器界面 "); // 設(shè)置窗體的標(biāo)題setBounds(100, 100, 290, 282); // 設(shè)置窗體的顯示位置及大小setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 設(shè)置窗體關(guān)閉按鈕的動(dòng)作為退出textField = new JTextField();textField.setHorizontalAlignment(SwingConstants.TRAILING);textField.setPreferredSize(new Dimension(12, 50));getContentPane().add(textField, BorderLayout.NORTH);textField.setColumns(10);final GridLayout gridLayout = new GridLayout(4, 0); // 創(chuàng)建網(wǎng)格布局管理器對(duì)象gridLayout.setHgap(5); // 設(shè)置組件的水平間距gridLayout.setVgap(5); // 設(shè)置組件的垂直間距JPanel panel = new JPanel(); // 獲得容器對(duì)象panel.setLayout(gridLayout); // 設(shè)置容器采用網(wǎng)格布局管理器getContentPane().add(panel, BorderLayout.CENTER);String[][] names = { { "1", "2", "3", "+" }, { "4", "5", "6", "-" },{ "7", "8", "9", "×" }, { ".", "0", "=", "÷" } };JButton[][] buttons = new JButton[4][4];for (int row = 0; row < names.length; row++) {for (int col = 0; col < names.length; col++) {buttons[row][col] = new JButton(names[row][col]); // 創(chuàng)建按鈕對(duì)象panel.add(buttons[row][col]); // 將按鈕添加到面板中}} }}
心法領(lǐng)悟:用數(shù)組管理重復(fù)類(lèi)型的數(shù)據(jù)。 像本實(shí)例的界面設(shè)計(jì)一樣,程序開(kāi)發(fā)中有很多重復(fù)類(lèi)型的數(shù)據(jù),在界面設(shè)計(jì)器中可以清晰地看出重復(fù)性的按鈕控件。
轉(zhuǎn)載于:https://my.oschina.net/u/3212883/blog/840462
總結(jié)
以上是生活随笔為你收集整理的按钮控件数组实现计算器界面的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ADSL组建局域网快捷方案 (转)
- 下一篇: 解决SysFader:iexplore.