Java 添加菜单的问题。。

图片说明

为什么添加菜单后 菜单没在左上角 而居中了 大神们能帮我看看代码哪里不对吗?

2个回答

图片说明
你看看

用setBounds的前提是其布局为null,即设置其布局为setlayout(null)才会生效

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Java中添加菜单栏的问题

我把菜单栏加入到了容器中,但是它显示和按钮都居中显示了,这是为什么,如果想到左上角显示,应该怎么办

java窗体菜单栏布局有关的问题

请问该怎样在直接在菜单栏右侧加菜单项目啊,它那个好像默认是从左到右…![图片说明](https://img-ask.csdn.net/upload/201605/23/1463995339_447628.png)

Java中对菜单栏的监听问题

当鼠标点击菜单(txt)的时让这个面板变成坑空白面板,主要是鼠标点击菜单的这个监听咋写,![图片](https://img-ask.csdn.net/upload/201711/28/1511867196_245563.png)![图片](https://img-ask.csdn.net/upload/201711/28/1511867292_115352.png)

关于Java弹出菜单实现的问题

今天看书看到java弹出菜单的设计和实现这个部分.书上有段代码 ``` // Create the popup menu jpu = new JPopupMenu(); // Create the popup menu items JMenuItem jmiCut = new JMenuItem("Cut"); JMenuItem jmiCopy = new JMenuItem("Copy"); JMenuItem jmiPaste = new JMenuItem("Paste"); // Add the menu items to the popup menu jpu.add(jmiCut); jpu.add(jmiCopy); jpu.add(jmiPaste); // add a listener for the popup trigger jfrm.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { if (e.isPopupTrigger()) jpu.show(e.getComponent(), e.getX(), e.getY()); } @Override public void mouseReleased(MouseEvent e) { if (e.isPopupTrigger()) jpu.show(e.getComponent(), e.getX(), e.getY()); } }); ``` 如上所示,我觉得很神奇,为什么不直接用mouseRealeased和mousePressed这两个中的一个方法定义弹出菜单,而是两个方法定义成一样的. 后来当我把其中的一个方法注释后就弹不出来了. 希望大神能帮我解答一下,谢谢

Java语言中如何显示菜单做出选择,菜单自主设计,最少要包含4个选择

Java语言中如何显示菜单做出选择,菜单自主设计,最少要包含4个选择 用if语句还是switch,显示效果的区别大么?

用JAVA实现菜单和按钮来控制绘图功能的代码

有没有用JAVA编写的代码,用菜单和按钮来控制绘图功能,课程设计也好,急求

java ,二级菜单到一级菜单的跳转,选项高亮问题

一级菜单: 1,登录系统 2,系统设置 3,退出 二级菜单: 1,注册 2,登录 3,返回上一级菜单 当我在选择一级菜单中的登录系统1进入二级菜单,然后选择1注册成功后再选择2登录进行密码匹配,(1)我现在密码匹配成功后怎么直接返回一级菜单呢? (2)返回的一级菜单怎么才能变成 1,[用户名]退出系统,并且打印出的字是黄色的字体呢?其余几个选项不用变

java菜单条不显示该怎么解决

import java.awt.*; import javax.swing.*; import java.awt.MenuBar; import static java.awt.BorderLayout.*; public class MenuBarTest { public static void main(String[] args) { JFrame jf=new JFrame("测试窗口"); MenuBar mb=new MenuBar(); Menu mu=new Menu("文件"); MenuItem mi=new MenuItem("站点管理器"); JTextArea jta=new JTextArea(); mu.add(mi); jf.setLayout(new BorderLayout()); jf.setMenuBar(mb); jf.add(jta,SOUTH); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.pack(); jf.setVisible(true); } }

java中窗体设计的JMenuBar子菜单的问题

JMenu baseDate=new JMenu("基础数据维护"); //menuBar.add(baseDate); //toolBar.add(menuBar); //baseDate.setHideActionText(false); JMenuItem readMana=new JMenuItem("读者信息管理"); JMenuItem bookMana=new JMenuItem("图书类别管理"); JMenuItem bookInfoMana=new JMenuItem("图书信息管理"); JMenuItem exit=new JMenuItem("退出"); exit.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub System.exit(0); } }); baseDate.add(readMana); baseDate.add(bookMana); baseDate.add(bookInfoMana); baseDate.add(exit); //实现JMenuItem下再加一级菜单 JMenuItem readAdd=new JMenuItem("读者信息添加"); JMenuItem readUpDel=new JMenuItem("读者修改与删除"); JMenu m1=new JMenu(); m1.add(readAdd); m1.add(readUpDel); readMana.add(m1); JMenuItem bookAdd=new JMenuItem("图书类别添加"); JMenuItem bookUpd=new JMenuItem("图书类别修改"); JMenu m2=new JMenu(); m2.add(bookAdd); m2.add(bookUpd); bookMana.add(m2); JMenuItem bookInfoAdd=new JMenuItem("图书信息添加"); JMenuItem bookxiugai=new JMenuItem("图书修改"); JMenu m3=new JMenu(); m3.add(bookAdd); m3.add(bookUpd); bookInfoMana.add(m3); menuBar.add(baseDate); //新书订购管理 JMenu newbookbuyMana=new JMenu("新书订购管理"); JMenuItem newbookbuy=new JMenuItem("新书订购"); JMenuItem checkbook=new JMenuItem("验收新书"); newbookbuyMana.add(newbookbuy); newbookbuyMana.add(checkbook); menuBar.add(newbookbuyMana); //借阅管理 JMenu borrowMana=new JMenu("借阅管理"); JMenuItem bookborrow=new JMenuItem("图书借阅"); JMenuItem bookreturn=new JMenuItem("图书归还"); JMenuItem booksearch=new JMenuItem("图书搜索"); borrowMana.add(bookborrow); borrowMana.add(bookreturn); borrowMana.add(booksearch); menuBar.add(borrowMana); //系统维护 JMenu systemmaintenance=new JMenu("系统维护"); JMenuItem changepwd=new JMenuItem("更改口令"); JMenuItem userMana=new JMenuItem("用户管理"); systemmaintenance.add(changepwd); systemmaintenance.add(userMana); JMenuItem userAdd=new JMenuItem("用户添加"); JMenuItem userUpDel=new JMenuItem("用户修改与删除"); JMenu m4=new JMenu(); m4.add(userAdd); m4.add(userUpDel); userMana.add(m4); menuBar.add(systemmaintenance); ![鼠标下移那个下面的菜单消失,根本无法用鼠标选择,这是怎么回事啊?图片说明](https://img-ask.csdn.net/upload/201512/12/1449928846_428500.jpg) ![这样的就不会消失,鼠标可以选择子菜单图片说明](https://img-ask.csdn.net/upload/201512/12/1449928918_800903.jpg) 求助大神的帮助

java使二级菜单栏点击出现一个窗口,没反应,事件处理如何处理?

package FakeMenu; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.border.EmptyBorder; import javax.swing.JMenuBar; import javax.swing.JMenu; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JMenuItem; import javax.swing.JOptionPane; public class FakeMenu extends JFrame { /** * */ private static final long serialVersionUID = 1L; private JPanel contentPane; JTextField t; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { FakeMenu frame = new FakeMenu(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public FakeMenu() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 308); JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); JMenu mnFile = new JMenu("File"); menuBar.add(mnFile); JMenu mnNewMenu_1 = new JMenu("New"); mnNewMenu_1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "ada"); } }); mnFile.add(mnNewMenu_1); JMenu mnNewMenu_2 = new JMenu("Open"); mnFile.add(mnNewMenu_2); JMenu mnSave_1 = new JMenu("Save"); mnFile.add(mnSave_1); JMenu mnNewMenu = new JMenu("Edit"); menuBar.add(mnNewMenu); JMenu mnCopy = new JMenu("Copy"); mnNewMenu.add(mnCopy); JMenu mnCut = new JMenu("Cut"); mnNewMenu.add(mnCut); JMenu mnNewMenu_3 = new JMenu("Paste"); mnNewMenu.add(mnNewMenu_3); JMenu mnSave = new JMenu("Help"); menuBar.add(mnSave); JMenu mnAbout = new JMenu("About"); mnSave.add(mnAbout); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(new BorderLayout(0, 0)); setContentPane(contentPane); } }

javaSwing 的菜单项太多了,一个屏幕显示不了,是否可以增加滚动条,或其他方法?

javaSwing 的菜单项太多了,一个屏幕显示不了,是否可以增加滚动条,或其他方法?! 见下图: [图片说明](https://img-ask.csdn.net/upload/201609/12/1473666840_307125.png) 我的代码附件: public class Nodepad extends JFrame { private JTextArea editor; private Container c; private Font f=new Font("sanserif",Font.PLAIN,12); //菜单栏成员属性声明 private JMenuBar mb; //菜单棒 private JMenu fileMenu; //文件菜单 private JMenu editMenu; //编辑菜单 private JMenu formatMenu; //格式菜单 private JMenuItem fileMenuOpen,fileMenuSave,fileMenuExit; //文件菜单的菜单项 private JMenuItem editMenuCopy,editMenuCut,editMenuPaste; //编辑菜单的菜单项 private JMenu formatSet;//格式菜单第一级菜单 private JMenuItem lineWrap,cancleLineWrap,wrapStyleWord,cancleWrapStyleWord;//格式菜单的第二级菜单 private JMenuItem i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12,i13,i14,i15,i16,i17,i18,i19,i20;//测试菜单 private JMenuItem i21,i22,i23,i24,i25,i26,i27,i28,i29,i30,i31,i32,i33,i34,i35,i36,i37,i38,i39,i40;//测试菜单 private JMenuItem i41,i42,i43,i44,i45,i46,i47,i48,i49,i50,i51,i52,i53,i54,i55,i56,i57,i58,i59,i60;//测试菜单 //工具栏成员属性声明 private JToolBar toolBar; //工具棒 private JButton b1,b2,b3,b4,b5; //声明5个按钮,分别为:“打开”、“保存”、“复制”、“剪切”、“粘贴” //弹出式菜单属性声明 private JPopupMenu pm; private JMenuItem item1,item2,item3,item4,item5; public Nodepad() { super("简单记事本"); setSize(400,300); try{ UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e){ System.err.println("不能被设置外观的原因:"+e);} c=getContentPane(); //创建一个内容面板 editor = new JTextArea(); //创建一个文本区 c.add(new JScrollPane(editor)); //设置滚动条,并添加到内容面板 //菜单栏的实现 //文件菜单的实现 mb = new JMenuBar(); //创建菜单棒 fileMenu = new JMenu("文件(F)");//创建菜单 fileMenuOpen = new JMenuItem("打开(O)...Ctrl+O"); fileMenuSave = new JMenuItem("保存(S)...Ctrl+S"); fileMenuExit = new JMenuItem("退出"); JMHandler JM=new JMHandler(); //创建监听器 fileMenuOpen.addActionListener(JM); //注册监听器 fileMenuSave.addActionListener(JM); fileMenuExit.addActionListener(JM); fileMenu.add(fileMenuOpen); fileMenu.add(fileMenuSave); fileMenu.addSeparator(); //添加分隔线 fileMenu.add(fileMenuExit); fileMenu.setFont(f); //设置菜单中文体的字体 //编辑菜单的实现 editMenu = new JMenu("编辑(E)"); editMenuCopy = new JMenuItem("复制(C) Ctrl+C"); editMenuCut = new JMenuItem("剪切(T) Ctrl+X"); editMenuPaste = new JMenuItem("粘贴(P) Ctrl+v"); EMHandler EM=new EMHandler(); //创建监听器 editMenuCopy.addActionListener(EM);//注册监听器 editMenuCut.addActionListener(EM); editMenuPaste.addActionListener(EM); editMenu.add(editMenuCopy); editMenu.add(editMenuCut); editMenu.add(editMenuPaste); editMenu.setFont(f); //格式菜单的实现 formatMenu = new JMenu("格式(O)"); //创建菜单 formatSet = new JMenu("格式设置"); //二级菜单 lineWrap = new JMenuItem("自动换行"); //二级菜单项 cancleLineWrap = new JMenuItem("取消自动换行"); wrapStyleWord = new JMenuItem("断行不断字"); cancleWrapStyleWord = new JMenuItem("取消断行不断字"); i1 = new JMenuItem("i1"); i2 = new JMenuItem("i2"); i3 = new JMenuItem("i3"); i4 = new JMenuItem("i4"); i5 = new JMenuItem("i5"); i6 = new JMenuItem("i6"); i7 = new JMenuItem("i7"); i8 = new JMenuItem("i8"); i9 = new JMenuItem("i9"); i10 = new JMenuItem("i10"); i11 = new JMenuItem("i11"); i12 = new JMenuItem("i12"); i13 = new JMenuItem("i13"); i14 = new JMenuItem("i14"); i15 = new JMenuItem("i15"); i16 = new JMenuItem("i16"); i17 = new JMenuItem("i17"); i18 = new JMenuItem("i18"); i19 = new JMenuItem("i19"); i20 = new JMenuItem("i20"); i21 = new JMenuItem("i21"); i22 = new JMenuItem("i22"); i23 = new JMenuItem("i23"); i24 = new JMenuItem("i24"); i25 = new JMenuItem("i25"); i26 = new JMenuItem("i26"); i27 = new JMenuItem("i27"); i28 = new JMenuItem("i28"); i29 = new JMenuItem("i29"); i30 = new JMenuItem("i30"); i31 = new JMenuItem("i31"); i32 = new JMenuItem("i32"); i33 = new JMenuItem("i33"); i34 = new JMenuItem("i34"); i35 = new JMenuItem("i35"); i36 = new JMenuItem("i36"); i37 = new JMenuItem("i37"); i38 = new JMenuItem("i38"); i39 = new JMenuItem("i39"); i40 = new JMenuItem("i40"); i41 = new JMenuItem("i41"); i42 = new JMenuItem("i42"); i43 = new JMenuItem("i43"); i44 = new JMenuItem("i44"); i45 = new JMenuItem("i45"); i46 = new JMenuItem("i46"); i47 = new JMenuItem("i47"); i48 = new JMenuItem("i48"); i49 = new JMenuItem("i49"); i50 = new JMenuItem("i50"); i51 = new JMenuItem("i51"); i52 = new JMenuItem("i52"); i53 = new JMenuItem("i53"); i54 = new JMenuItem("i54"); i55 = new JMenuItem("i55"); i56 = new JMenuItem("i56"); i57 = new JMenuItem("i57"); i58 = new JMenuItem("i58"); i59 = new JMenuItem("i59"); i60 = new JMenuItem("i60"); //wangkz //formatSet.setLayout(getLayout()); // System.out.println(formatSet.getAutoscrolls()); // System.out.println(formatSet.getLayout().toString()); // formatSet.setLayout(mgr); // formatSet.resize(width, height); FMHandler FM=new FMHandler(); //创建事件监听器 lineWrap.addActionListener(FM); //注册二级菜单项的监听器 cancleLineWrap.addActionListener(FM); wrapStyleWord.addActionListener(FM); cancleWrapStyleWord.addActionListener(FM); formatSet.add(lineWrap); formatSet.add(cancleLineWrap); formatSet.addSeparator(); //添加分隔线 formatSet.add(wrapStyleWord); formatSet.add(cancleWrapStyleWord); formatSet.add(i1 ); formatSet.add(i2 ); formatSet.add(i3 ); formatSet.add(i4 ); formatSet.add(i5 ); formatSet.add(i6 ); formatSet.add(i7 ); formatSet.add(i8 ); formatSet.add(i9 ); formatSet.add(i10); formatSet.add(i11); formatSet.add(i12); formatSet.add(i13); formatSet.add(i14); formatSet.add(i15); formatSet.add(i16); formatSet.add(i17); formatSet.add(i18); formatSet.add(i19); formatSet.add(i20); formatSet.add(i21); formatSet.add(i22); formatSet.add(i23); formatSet.add(i24); formatSet.add(i25); formatSet.add(i26); formatSet.add(i27); formatSet.add(i28); formatSet.add(i29); formatSet.add(i30); formatSet.add(i31); formatSet.add(i32); formatSet.add(i33); formatSet.add(i34); formatSet.add(i35); formatSet.add(i36); formatSet.add(i37); formatSet.add(i38); formatSet.add(i39); formatSet.add(i40); formatSet.add(i41); formatSet.add(i42); formatSet.add(i43); formatSet.add(i44); formatSet.add(i45); formatSet.add(i46); formatSet.add(i47); formatSet.add(i48); formatSet.add(i49); formatSet.add(i50); formatSet.add(i51); formatSet.add(i52); formatSet.add(i53); formatSet.add(i54); formatSet.add(i55); formatSet.add(i56); formatSet.add(i57); formatSet.add(i58); formatSet.add(i59); formatSet.add(i60); //wangkz // formatSet.setAutoscrolls(true); // formatSet.setAutoscrolls formatMenu.add(formatSet); // JScrollPane myScrollPane=new JScrollPane(formatSet); // formatMenu.add(myScrollPane); formatMenu.setFont(f); //将菜单全部添加菜单棒里 mb.add(fileMenu); mb.add(editMenu); mb.add(formatMenu); //工具栏的实现 //按钮分别为:“打开”、“保存”、“复制”、“剪切”、“粘贴” toolBar =new JToolBar(); //创建工具棒 b1= new JButton(new ImageIcon("img/open.gif")); b2= new JButton(new ImageIcon("img/save.gif")); b3= new JButton(new ImageIcon("img/copy.gif")); b4= new JButton(new ImageIcon("img/cut.gif")); b5= new JButton(new ImageIcon("img/paste.gif")); TBHandler TB=new TBHandler(); //创建按钮监听器 b1.addActionListener(TB); b2.addActionListener(TB); b3.addActionListener(TB); b4.addActionListener(TB); b5.addActionListener(TB); //把按钮全部添加到工具棒中 toolBar.add(b1); toolBar.add(b2); toolBar.add(b3); toolBar.add(b4); toolBar.add(b5); //弹出菜单的实现 pm =new JPopupMenu(); //创建弹出菜单 item1 = new JMenuItem("打开"); item2 = new JMenuItem("保存"); item3 = new JMenuItem("复制"); item4 = new JMenuItem("剪切"); item5 = new JMenuItem("粘贴"); JPHandler JP=new JPHandler(); item1.addActionListener(JP); //注册菜单项的鼠标事件监听器 item2.addActionListener(JP); item3.addActionListener(JP); item4.addActionListener(JP); item5.addActionListener(JP); editor.addMouseListener(JP); //注册文本区的鼠标事件监听器 pm.add(item1); pm.add(item2); pm.add(item3); pm.add(item4); pm.add(item5); //把菜单栏、工具栏、弹出菜单添加到内容面板 setJMenuBar(mb); //显示菜单栏 c.add(toolBar,BorderLayout.NORTH); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }

Java 自制的计算器菜单键无法复制

代码如下: import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JTextField; /** * 一个计算器,与Windows附件自带计算器的标准版功能、界面相仿。 但还不支持键盘操作。 */ public class Calculator extends JFrame implements ActionListener { /** 计算器上的键的显示名字 */ private final String[] KEYS = { "7", "8", "9", "/", "4", "5", "6", "*" , "1", "2", "3","-", "0","+/-",".","+", "1/x", "%", "sqrt", "=" }; /** 计算器上的功能键的显示名字 */ private final String[] COMMAND = { "Backspace", "C" }; /** 计算器上键的按钮 */ private JButton keys[] = new JButton[KEYS.length]; /** 计算器上的功能键的按钮 */ private JButton commands[] = new JButton[COMMAND.length]; /** 计算结果文本框 */ private JTextField resultText = new JTextField("0"); // private JMenuBar mb=new JMenuBar(); //编辑 private JMenu mEdit = new JMenu("编辑(E)"); //复制黏贴 private JMenuItem mCopy = new JMenuItem("复制(C)"); private JMenuItem mPaste = new JMenuItem("黏贴(V)"); //剪切板 private StringBuffer copyBoard=new StringBuffer(20); // 标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字 private boolean firstDigit = true; // 计算的中间结果。 private double resultNum = 0.0; // 当前运算的运算符 private String operator = "="; // 操作是否合法 private boolean operateValidFlag = true; /** * 构造函数 */ public Calculator() { super(); // 初始化计算器 init(); // 设置计算器的背景颜色 this.setBackground(Color.LIGHT_GRAY); this.setTitle("计算器"); // 在屏幕(500, 300)坐标处显示计算器 this.setLocation(500, 300); // 许修改计算器的大小 this.setResizable(true); // 使计算器中各组件大小合适 this.pack(); //添加菜单与目录 this.setJMenuBar(mb); mb.add(mEdit); mEdit.setMnemonic(KeyEvent.VK_E); mEdit.add(mCopy); mEdit.add(mPaste); } /** * 初始化计算器 */ private void init() { // 文本框中的内容采用右对齐方式 resultText.setHorizontalAlignment(JTextField.RIGHT); // 允许修改结果文本框 resultText.setEditable(true); // 设置文本框背景颜色为白色 resultText.setBackground(Color.white); // 初始化计算器上键的按钮,将键放在一个画板内 JPanel calckeysPanel = new JPanel(); // 用网格布局器,5行,4列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素 calckeysPanel.setLayout(new GridLayout(5, 4, 0, 0)); for (int i = 0; i < KEYS.length; i++) { keys[i] = new JButton(KEYS[i]); calckeysPanel.add(keys[i]); keys[i].setForeground(Color.black); } // 初始化功能键,都用红色标示。将功能键放在一个画板内 JPanel commandsPanel = new JPanel(); // 用网格布局器,1行,3列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素 commandsPanel.setLayout(new GridLayout(1, 3, 0, 0)); for (int i = 0; i < COMMAND.length; i++) { commands[i] = new JButton(COMMAND[i]); commandsPanel.add(commands[i]); } // 下面进行计算器的整体布局,将calckeys和command画板放在计算器的中部, // 将文本框放在北部,将calms画板放在计算器的西部。 // 新建一个大的画板,将上面建立的command和calckeys画板放在该画板内 JPanel panel1 = new JPanel(); // 画板采用边界布局管理器,画板里组件之间的水平和垂直方向上间隔都为3象素 panel1.setLayout(new BorderLayout(3, 3)); panel1.add("North", commandsPanel); panel1.add("Center", calckeysPanel); // 建立一个画板放文本框 JPanel top = new JPanel(); top.setLayout(new BorderLayout()); top.add("Center", resultText); // 整体布局 getContentPane().setLayout(new BorderLayout(3, 5)); getContentPane().add("North", top); getContentPane().add("Center", panel1); // 为各按钮添加事件侦听器 // 都使用同一个事件侦听器,即本对象。本类的声明中有implements ActionListener for (int i = 0; i < KEYS.length; i++) { keys[i].addActionListener(this); } for (int i = 0; i < COMMAND.length; i++) { commands[i].addActionListener(this); } } /** * 处理事件 */ public void actionPerformed(ActionEvent e) { // 获取事件源的标签 String label = e.getActionCommand(); if(label.equals("复制(C)")) { String temp = resultText.getText().trim(); copyBoard.replace(0, copyBoard.length(), temp); } else if(label.equals("黏贴(V)")) { resultText.setText(copyBoard.toString()); }else if (label.equals(COMMAND[0])) { // 用户按了"Backspace"键 handleBackspace(); }else if (label.equals(COMMAND[1])) { // 用户按了"C"键 handleC(); } else if ("0123456789.".indexOf(label) >= 0) { // 用户按了数字键或者小数点键 handleNumber(label); // handlezero(zero); } else { // 用户按了运算符键 handleOperator(label); } } /** * 处理Backspace键被按下的事件 */ private void handleBackspace() { String text = resultText.getText(); int i = text.length(); if (i > 0) { // 退格,将文本最后一个字符去掉 text = text.substring(0, i - 1); if (text.length() == 0) { // 如果文本没有了内容,则初始化计算器的各种值 resultText.setText("0"); firstDigit = true; operator = "="; } else { // 显示新的文本 resultText.setText(text); } } } /** * 处理数字键被按下的事件 * * @param key */ private void handleNumber(String key) { if (firstDigit) { // 输入的第一个数字 resultText.setText(key); } else if ((key.equals(".")) && (resultText.getText().indexOf(".") < 0)) { // 输入的是小数点,并且之前没有小数点,则将小数点附在结果文本框的后面 resultText.setText(resultText.getText() + "."); } else if (!key.equals(".")) { // 如果输入的不是小数点,则将数字附在结果文本框的后面 resultText.setText(resultText.getText() + key); } // 以后输入的肯定不是第一个数字了 firstDigit = false; } /** * 处理C键被按下的事件 */ private void handleC() { // 初始化计算器的各种值 resultText.setText("0"); firstDigit = true; operator = "="; } /** * 处理运算符键被按下的事件 * * @param key */ private void handleOperator(String key) { if (operator.equals("/")) { // 除法运算 // 如果当前结果文本框中的值等于0 if (getNumberFromText() == 0.0) { // 操作不合法 operateValidFlag = false; resultText.setText("除数不能为零"); } else { resultNum /= getNumberFromText(); } } else if (operator.equals("1/x")) { // 倒数运算 if (resultNum == 0.0) { // 操作不合法 operateValidFlag = false; resultText.setText("零没有倒数"); } else { resultNum = 1 / resultNum; } } else if (operator.equals("+")) { // 加法运算 resultNum += getNumberFromText(); } else if (operator.equals("-")) { // 减法运算 resultNum -= getNumberFromText(); } else if (operator.equals("*")) { // 乘法运算 resultNum *= getNumberFromText(); } else if (operator.equals("sqrt")) { // 平方根运算 resultNum = Math.sqrt(resultNum); } else if (operator.equals("%")) { // 百分号运算,除以100 resultNum = resultNum / 100; } else if (operator.equals("+/-")) { // 正数负数运算 resultNum = resultNum * (-1); } else if (operator.equals("=")) { // 赋值运算 resultNum = getNumberFromText(); } if (operateValidFlag) { // 双精度浮点数的运算 long t1; double t2; t1 = (long) resultNum; t2 = resultNum - t1; if (t2 == 0) { resultText.setText(String.valueOf(t1)); } else { resultText.setText(String.valueOf(resultNum)); } } // 运算符等于用户按的按钮 operator = key; firstDigit = true; operateValidFlag = true; } /** * 从结果文本框中获取数字 * * @return */ private double getNumberFromText() { double result = 0; try { result = Double.valueOf(resultText.getText()).doubleValue(); } catch (NumberFormatException e) { } return result; } public static void main(String args[]) { Calculator calculator1 = new Calculator(); calculator1.setVisible(true); calculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }

java web树形菜单(树形结构),求大神现身

一直做得都是Java后端开发,最近经理给我分了个任务,其中一段是web树形菜单的处理。用jquery实现树形菜单(标签是ul和li)之后,发现ul和li无法导入到excel。在此特请java大神,帮忙用table,tr,td(可配合span',div)实现树形菜单。努力研究了两天,我已经跪了,效果见图片 ​若能实现,如救我一命,胜造七级浮屠。。。。。 ![图片说明](https://img-ask.csdn.net/upload/201504/18/1429323116_23560.jpg)

如何解决Java窗口中添加背景图后,再添加图片无法显示?

Pool.java package com_Tentact_FishGame; //捕鱼达人游戏 import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JPanel; public class Pool extends JPanel{ Pool pool; Fish fish; Net net; BufferedImage poolImage; public Pool() throws IOException { poolImage=ImageIO.read(new File("src/image/bg.jpg")); //读取图片 } @Override //读取图片后画图片 public void paint(Graphics g) { g.drawImage(poolImage,0,0,null); //g.drawImage(fish.fishImage,fish.point.x,fish.point.y,null); ** //就是上面这行代码,添加进去后就无法正常显示图片了。** ** //求大佬解决呀** //g.drawImage(net.netImage,net.point.x,net.point.y,null); } } Fish.java package com_Tentact_FishGame; import java.awt.Point; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; public class Fish { Fish fish; Point point;//用点来代替鱼的位置 BufferedImage fishImage; Random random=new Random();//随机生成数 public Fish() throws IOException { fishImage=ImageIO.read(new File("src/image/fish01_01.png")); int x=random.nextInt(80);//生成x坐标 int y=random.nextInt(50);//生成y坐标 point=new Point(x,y);//生成鱼的位置 } } Windows.java package com_Tentact_FishGame; import java.io.IOException; import javax.swing.JFrame; public class Window extends JFrame{ public Window() throws IOException { this.setSize(800,500); this.setTitle("捕鱼达人"); this.setLocationRelativeTo(null);//居中 this.setResizable(false);//不可调节 this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); Pool pool=new Pool(); this.add(pool); this.setVisible(true); } } Test.java package com_Tentact_FishGame; import java.io.IOException; public class Test { public static void main(String[] args) throws IOException { Window window= new Window(); } }

java代码扫描后台数据库表自动更新树形菜单节点

最近,我接手了一个二次开发的WEB系统,是springmvc的架构,但是,当我完成了某个子模块应用程序的开发,准备把源代码布置到系统上的时候,发现,无法生成主菜单下的子菜单。上图,给大家有一个形象地认识: ![图片说明](https://img-ask.csdn.net/upload/201705/13/1494672532_638652.jpg) ![图片说明](https://img-ask.csdn.net/upload/201705/13/1494672543_788168.jpg) ,然后,先前的那个开发团队,留下的数据库,里面有2个表专门是用来更新菜单节点的,例如,我想在主菜单Node1下,增加一个 Node1.1,我必须在menu表和privilige表里增加以下的SQL语句, Insert into menu values (115, 'java books', 'java', 'Java编程语言', 'ajax', ' ',15, 7, ‘/books/page/javaBkMng’); Insert into privilege p values (1000,115 ); 这里的2张表结构分别是: menu 表 id, app_key, menu_key, txt_local, txt_en, txt_fr, parent_id, position, url privilige 表 id, menu_fk 我现在面临的困难就是,需要在这个菜单里添加一个带权限的子节点,根据遗留下来的源代码,以前的开发人员使用了with recursive cte as的递归查询,拼接SQL语句,来生成这个TREE形的菜单。 请问,我的数据库是ORACLE的,能使用with recursive cte as这样的语句吗?如果不行,用with cte(...) as可以吗?请指教如何写这段拼接SQL语句来实现这种JAVA代码自动扫描数据库表,生成新的带URL的节点,谢谢。

java swing中如何为一个窗体添加背景图片

java swing中如何为一个窗体添加背景图片,java swing中如何为一个窗体添加背景图片

JAVA popupMenu弹出菜单了,怎样实现点击项产生事件

如图:![图片说明](https://img-ask.csdn.net/upload/201505/28/1432810907_966662.jpg)我弹出的这个PopupMenu ,想在点击添加好友响应事件,但是他ActionListener,该怎么样去 响应事件,求解,刚那个朋友说的不对。求解。

Java中SWing菜单栏是不是能锁定?

我在住菜单中添加一项菜单是,无法添加。在基本菜单中添加子菜单,也是添加不了,是怎么回事

如何菜单项设置快捷键

如何给菜单项设置ctrl快捷键 查看=new JMenu("查看(V)");查看.setMnemonic(KeyEvent.VK_V);设成ctrl快捷键

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

springboot+jwt实现token登陆权限认证

一 前言 此篇文章的内容也是学习不久,终于到周末有时间码一篇文章分享知识追寻者的粉丝们,学完本篇文章,读者将对token类的登陆认证流程有个全面的了解,可以动态搭建自己的登陆认证过程;对小项目而已是个轻量级的认证机制,符合开发需求;更多精彩原创内容关注公主号知识追寻者,读者的肯定,就是对作者的创作的最大支持; 二 jwt实现登陆认证流程 用户使用账号和面发出post请求 服务器接受到请求后使用私...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

程序员写出这样的代码,能不挨骂吗?

当你换槽填坑时,面对一个新的环境。能够快速熟练,上手实现业务需求是关键。但是,哪些因素会影响你快速上手呢?是原有代码写的不够好?还是注释写的不够好?昨夜...

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

早上躺尸,晚上干活:硅谷科技公司这么流行迟到?

硅谷科技公司上班时间OPEN早已不是什么新鲜事,早九晚五是常态,但有很多企业由于不打卡,员工们10点、11点才“姗姗来迟”的情况也屡见不鲜。 这种灵活的考勤制度为人羡慕,甚至近年来,国内某些互联网企业也纷纷效仿。不过,硅谷普遍弹性的上班制度是怎么由来的呢?这种“流行性迟到”真的有那么轻松、悠哉吗? 《动态规划专题班》 课程试听内容: 动态规划的解题要领 动态规划三大类 求最值/计数/可行性 常...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

Python爬虫,高清美图我全都要(彼岸桌面壁纸)

爬取彼岸桌面网站较为简单,用到了requests、lxml、Beautiful Soup4

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

Java岗开发3年,公司临时抽查算法,离职后这几题我记一辈子

前几天我们公司做了一件蠢事,非常非常愚蠢的事情。我原以为从学校出来之后,除了找工作有测试外,不会有任何与考试有关的事儿。 但是,天有不测风云,公司技术总监、人事总监两位大佬突然降临到我们事业线,叫上我老大,给我们组织了一场别开生面的“考试”。 那是一个风和日丽的下午,我翘着二郎腿,左手端着一杯卡布奇诺,右手抓着我的罗技鼠标,滚动着轮轴,穿梭在头条热点之间。 “淡黄的长裙~蓬松的头发...

大胆预测下未来5年的Web开发

在2019年的ReactiveConf 上,《Elm in Action》的作者Richard Feldman对未来5年Web开发的发展做了预测,很有意思,分享给大家。如果你有机会从头...

立即提问
相关内容推荐