您的位置:首页 > 其它

swing学习笔记三(菜单快捷MenuBar )

2012-09-06 22:43 369 查看
/**

* 菜单快捷键

*

* @time 12:40:40 PM

* @author retacn yue

* @Email zhenhuayue@sina.com

*/

public class Test_ShortcutTest extends Frame {

private static final long serialVersionUID = 1L;

double a, d, n, sum;

// 参数用于指定列数

TextField textField1 = new TextField(5),//

textField2 = new TextField(5),//

textField3 = new TextField(5),//

textField4 = new TextField(10);//

Label label1 = new Label("******计算等差/等比级数********"),//

label2 = new Label("输入初始值:"),//

label3 = new Label("输入公差/公比值:"),//

label4 = new Label("输出第几项"),//

label5 = new Label("输出总和:");//

/**

* 菜单快捷键

*

* 第二个参数是否需要同时按下shift键

*/

MenuShortcut menuShortcut1 = new MenuShortcut(KeyEvent.VK_A, true),//

menuShortcut2 = new MenuShortcut(KeyEvent.VK_S, false);

// 菜单栏

MenuBar bar = new MenuBar();

Menu menu = new Menu("级数");

MenuItem sz1 = new MenuItem("等差级数", menuShortcut1),//

sz2 = new MenuItem("等比级数", menuShortcut2);//

/**

* 构造器

*/

private Test_ShortcutTest() {

super("菜单快捷键测试");

setLayout(new FlowLayout());

setBackground(Color.orange);

menu.add(sz1);

menu.add(sz2);

bar.add(menu);

setMenuBar(bar);

add(label1);

add(label2);

add(textField1);

add(label3);

add(textField2);

add(label4);

add(textField3);

add(label5);

add(textField4);

setSize(200, 180);

setVisible(true);

addWindowListener(new koWindowListener());

sz1.addActionListener(new koActionListener());

sz2.addActionListener(new koActionListener());

}

/**

* 关闭窗体

*

* @time 1:22:40 PM

* @author retacn yue

* @Email zhenhuayue@sina.com

*/

class koWindowListener extends WindowAdapter {

@Override

public void windowClosing(WindowEvent e) {

e.getWindow().dispose();

System.exit(0);

}

}

/**

* 菜单单击监听

*

*/

class koActionListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

a = new Double(textField1.getText()).doubleValue();

d = new Double(textField2.getText()).doubleValue();

n = new Double(textField3.getText()).doubleValue();

if (e.getSource() == sz1) {

textField4.setBackground(Color.yellow);

// 计算等差级数的总和

// 公式为:s=(a1+an)n/2

sum = (2 * a + (n - 1) * d) * n / 2;

} else if (e.getSource() == sz2) {

textField4.setBackground(Color.green);

/**

* 计算等比级数的总和

*

* 设比例因子为q 项数为n 首项为a1 和s=a1*(1-q^n)/(1-q)

*/

sum = a * (1 - Math.pow(d, n)) / (1 - d);

}

textField4.setText(String.valueOf(sum));

}

}

public static void main(String[] args) {

new Test_ShortcutTest();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: