控制台程序。

JMenuBar对象表示放在窗口顶部的菜单栏。可以为JMenuBar对象添加JMenu或JMenuItem对象,它们都显示在菜单栏上。JMenu对象是带有标签的菜单,单击就可以显示一列菜单项。JMenuItem对象表示菜单中带有标签的菜单项,单击就会执行某个程序动作。

// Main window for the Sketcher application

import javax.swing.*;

import static java.awt.event.InputEvent.*; // For modifier constants

@SuppressWarnings("serial")

public class SketcherFrame extends JFrame {

// Constructor

public SketcherFrame(String title) {

setTitle(title); // Set the window title

setDefaultCloseOperation(EXIT_ON_CLOSE);

setJMenuBar(menuBar); // Add the menu bar to the window

JMenu fileMenu = new JMenu("File"); // Create File menu

JMenu elementMenu = new JMenu("Elements"); // Create Elements menu

fileMenu.setMnemonic('F'); // Create shortcut

elementMenu.setMnemonic('E'); // Create shortcut

// Construct the file drop-down menu

newItem = fileMenu.add("New"); // Add New item

openItem = fileMenu.add("Open"); // Add Open item

closeItem = fileMenu.add("Close"); // Add Close item

fileMenu.addSeparator(); // Add separator

saveItem = fileMenu.add("Save"); // Add Save item

saveAsItem = fileMenu.add("Save As..."); // Add Save As item

fileMenu.addSeparator(); // Add separator

printItem = fileMenu.add("Print"); // Add Print item

// Add File menu accelerators

newItem.setAccelerator(KeyStroke.getKeyStroke('N',CTRL_DOWN_MASK ));

openItem.setAccelerator(KeyStroke.getKeyStroke('O', CTRL_DOWN_MASK));

saveItem.setAccelerator(KeyStroke.getKeyStroke('S', CTRL_DOWN_MASK));

printItem.setAccelerator(KeyStroke.getKeyStroke('P', CTRL_DOWN_MASK));

// Construct the Element drop-down menu

elementMenu.add(lineItem = new JRadioButtonMenuItem("Line", true));

elementMenu.add(rectangleItem = new JRadioButtonMenuItem("Rectangle", false));

elementMenu.add(circleItem = new JRadioButtonMenuItem("Circle", false));

elementMenu.add(curveItem = new JRadioButtonMenuItem("Curve", false));

ButtonGroup types = new ButtonGroup();

types.add(lineItem);

types.add(rectangleItem);

types.add(circleItem);

types.add(curveItem);

// Add element type accelerators

lineItem.setAccelerator(KeyStroke.getKeyStroke('L', CTRL_DOWN_MASK));

rectangleItem.setAccelerator(KeyStroke.getKeyStroke('E', CTRL_DOWN_MASK));

circleItem.setAccelerator(KeyStroke.getKeyStroke('I', CTRL_DOWN_MASK));

curveItem.setAccelerator(KeyStroke.getKeyStroke('V', CTRL_DOWN_MASK));

elementMenu.addSeparator();

JMenu colorMenu = new JMenu("Color"); // Color submenu

elementMenu.add(colorMenu); // Add the submenu

colorMenu.add(redItem = new JCheckBoxMenuItem("Red", false));

colorMenu.add(yellowItem = new JCheckBoxMenuItem("Yellow", false));

colorMenu.add(greenItem = new JCheckBoxMenuItem("Green", false));

colorMenu.add(blueItem = new JCheckBoxMenuItem("Blue", true));

// Add element color accelerators

redItem.setAccelerator(KeyStroke.getKeyStroke('R', CTRL_DOWN_MASK));

yellowItem.setAccelerator(KeyStroke.getKeyStroke('Y', CTRL_DOWN_MASK));

greenItem.setAccelerator(KeyStroke.getKeyStroke('G', CTRL_DOWN_MASK));

blueItem.setAccelerator(KeyStroke.getKeyStroke('B', CTRL_DOWN_MASK));

menuBar.add(fileMenu); // Add the file menu

menuBar.add(elementMenu); // Add the element menu

}

private JMenuBar menuBar = new JMenuBar(); // Window menu bar

// File menu items

private JMenuItem newItem, openItem, closeItem,

saveItem, saveAsItem, printItem;

// Element menu items

private JRadioButtonMenuItem lineItem, rectangleItem, circleItem, // Types

curveItem, textItem;

private JCheckBoxMenuItem redItem, yellowItem, // Colors

greenItem, blueItem ;

}

// Sketching application

import javax.swing.*;

import java.awt.*;

import javax.swing.SwingUtilities;

public class Sketcher {

public static void main(String[] args) {

SwingUtilities.invokeLater(new Runnable() {

public void run() {

createWindow();

}

});

}

public static void createWindow(){

window = new SketcherFrame("Sketcher"); // Create the app window

Toolkit theKit = window.getToolkit(); // Get the window toolkit

Dimension wndSize = theKit.getScreenSize(); // Get screen size

// Set the position to screen center & size to half screen size

window.setSize(wndSize.width/2, wndSize.height/2); // Set window size

window.setLocationRelativeTo(null); // Center window

window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

window.setVisible(true);

}

private static SketcherFrame window; // The application window

}

java向窗口添加菜单_Java基础之创建窗口——向窗口中添加菜单(Sketcher)相关推荐

  1. java图形用户登录界面_java图形化界面实现登录窗口

    登录窗口一般很常见,现在让我们自己也来写一个吧! ps:很多import是重复的,是因为我是分了几个类写的,必须单独导入 //模拟qq登录窗口 import java.awt.*; import ja ...

  2. java list 截取部分数据_Java List.subList()方法:获取列表中指定范围的子列表

    集合类中的 List.subList() 方法用于获取列表中指定范围的子列表,该列表支持原列表所支持的所有可选操作.返回列表中指定范围的子列表. 语法: subList(int fromIndex,i ...

  3. java返回组件所在窗体_Java基础知识笔记第九章:组件及事件处理

    java Swing 图形用户界面(GUI : Graphics User Interface) 窗口 JFrame常用方法 JFrame()创建一个无标题的窗口. JFrame(String s)创 ...

  4. java增强型for报错_Java基础——增强for循环

    java1.5版本引入了一个增强for循环,基本原理和for循环类似. 语法声明:for(表达式:条件表达式) 举例:for (String str : set) 解释:set代表set集合,str代 ...

  5. java继承原理内存角度_Java基础知识巩固

    最近发现自己的Java基础知识还是有点薄弱,刚好有点空闲时间进行再补一补,然后进行整理一下,方便自己以后复习.其实个人认为Java基础还是很重要的,不管从事Java后端开发还是Android开发,Ja ...

  6. java arraylist枚举器遍历_Java基础(七)泛型数组列表ArrayList与枚举类Enum

    一.泛型数组列表ArrayList 1.在Java中,ArrayList类可以解决运行时动态更改数组的问题.ArrayList使用起来有点像数组,但是在添加或删除元素时,具有自动调节数组容量的功能,而 ...

  7. java jtable 复选框_java swing如何在JTable一个单元格添加多个复选框

    展开全部 java swing中在jTable中添加多个复选框的方32313133353236313431303231363533e59b9ee7ad9431333337616566式如下:impor ...

  8. java 反射创建对象并赋值_java使用反射创建并操作对象的方法

    Class 对象可以获得该类里的方法(由 Method 对象表示).构造器(由 Constructor 对象表示).成员变量(由 Field 对象表示),这三个类都位于 java.lang.refle ...

  9. java 邮件 已读回执_java – 在Firebase群组消息传递应用中实施已读回执功能

    为此,您需要在名为seenBy的Firebase数据库中添加另一个节点,该节点必须嵌套在meassage部分中的每个messageId下.您的数据库应如下所示: Firebase-root | --- ...

最新文章

  1. 一文读懂对抗生成网络的3种模型
  2. 赋能云HBase备份恢复 百T级别数据量备份恢复支持
  3. 笔记-计算机网络基础-综合布线系统
  4. leetcode-合并两个有序链表
  5. 委派模式与策略模式综合应用
  6. JS函数,数组,日期
  7. 获取滚动条所在页面位置。做一个类似TX的消息框
  8. Python Frozenset()
  9. linux登录显示 Error in service module错误
  10. 鸿蒙系统下载地址_华为鸿蒙代码全开源
  11. 管螺纹如何标注_天天和螺纹打交道,你知道有多少种螺纹吗,原来螺纹种类这么乱...
  12. PMP知识点速记——4.1制定项目章程
  13. python自动下载小说
  14. 中国大学慕课mooc答题/自动播放脚本(domooc)使用教程
  15. 高斯正反算—投影坐标转大地坐标、大地坐标转投影坐标(附有完整代码及测试结果)
  16. 【Flask项目】项目准备之-容联云短信服务平台使用—发送短信、Flask-limiter限流
  17. Pyhton可视化(1): 历年中国大学学术排行榜
  18. Android设备的序列号与ro.serialno
  19. steam如何一键登录_如何在Steam上启用一键通
  20. 相关性分析 addmodulescore得到的每个细胞评分与page_enrichments得到的每个细胞评分的相关性

热门文章

  1. LINUX集群技术构建ANSYS分布式高性能计算平台
  2. yuv转bmp说明2
  3. 磁云数字:供应链金融-支付系统演进过程
  4. Windows系统查看CDkey(系统激活秘钥)
  5. 利用STM32 ST-LINK Utility 解除芯片读保护
  6. 根据视频地址获取视频的第一帧画面做为封面
  7. mac多个终端并排显示技巧
  8. 微信支付与支付宝支付——扫码支付
  9. 苹果iMessage垃圾信息泛滥:运营商难涉及
  10. DCache-CacheServer分析(八)