使用Javascript为计算器的网格布局

时间:2010-03-12 06:24:59

标签: java asp.net javascript jquery html

有人能告诉我使用网格布局设置计算器按钮的最佳方法

1 个答案:

答案 0 :(得分:1)

这个问题几乎过于笼统,你甚至都不清楚你在说什么编程语言(JavaScript?Java?X.net?)。

让我举一个使用Java的例子。基本的想法是你为每个按钮创建一个javax.swing.JButton(假设你正在使用Swing),然后你考虑你想要实现的布局(显然是一个网格),并添加按钮到父组件。例如,模仿GNOME计算器的布局:

import java.awt.*;
import javax.swing.*;

/**
 * +----+----+----+----+
 * |Bksp| CE | Clr| +- |
 * +----+----+----+----+
 * | 7  | 8  | 9  | /  |
 * +----+----+----+----+
 * | 4  | 5  | 6  | *  |
 * +----+----+----+----+
 * | 1  | 2  | 3  | -  |
 * +----+----+----+----+
 * | 0  | .  | =  | +  |
 * +----+----+----+----+
 */
public class Calculator extends JPanel {
    public Calculator() {
        JButton bksp      = new JButton("Bksp");
        JButton ce        = new JButton("CE");
        JButton clr       = new JButton("Clr");
        JButton plusminus = new JButton("+-");
        JButton div       = new JButton("/");
        JButton mult      = new JButton("*");
        JButton minus     = new JButton("-");
        JButton plus      = new JButton("+");
        JButton equals    = new JButton("=");
        JButton dot       = new JButton(".");
        JButton[] digits = new JButton[10];
        for (int i = 0; i < digits.length; i++) {
            digits[i] = new JButton(String.valueOf(i));
        }

        /* do the layout */
        setLayout(new GridLayout(5, 4, 5, 5));
        add(bksp);
        add(ce);
        add(clr);
        add(plusminus);
        add(digits[7]);
        add(digits[8]);
        add(digits[9]);
        add(div);
        add(digits[4]);
        add(digits[5]);
        add(digits[6]);
        add(mult);
        add(digits[1]);
        add(digits[2]);
        add(digits[3]);
        add(minus);
        add(digits[0]);
        add(dot);
        add(equals);
        add(plus);
    }

    public static void main(String[] args) {
        Calculator calc = new Calculator();

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(calc);

        frame.setSize(300, 300);
        frame.setVisible(true);
    }
}

使用new GridLayout(5, 4, 5, 5),您可以定义5x4网格(5行,4列)和5个像素的单元格间距,水平和垂直。之后,您只需按正确的顺序添加按钮(从左到右,从上到下)。