尝试使用 Java.swing 创建一个 MenuBar,并创建了一个 JMenu() 对象,但它不允许我将它添加到框架中,但不确定为什么?
Trying to create a MenuBar using Java.swing, and created an object of JMenu(), but it wont let me add It to the frame and not sure why?
public class Menu {
private JMenu borders;
//constructor
public Menu()
{
//crate object
//this.menuBar = new JMenuBar();
//------create menu items----
//menu item for borders
borders = new JMenu("Border");
// add border options
borders.setMnemonic(KeyEvent.VK_U);
//add border options
borders.add(new JMenuItem("Etched"));
borders.add(new JMenuItem("Raised"));
borders.add(new JMenuItem("Matte"));
borders.add(new JMenuItem("Tilted"));
borders.add(new JMenuItem("Compounded"));
JMenuItem quit = new JMenuItem("Quit");
quit.setMnemonic(KeyEvent.VK_Q);
borders.add(quit);
//set Accelerator
quit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, Event.CTRL_MASK));
//add action listener
//@Override
quit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
}
}
public class DrawingFrame extends JFrame{
protected CanvasEditor canvasEditor;
protected DrawingCanvas drawingCanvas;
private Menu menu;
public DrawingFrame()
{
this.setTitle("Drawing Application");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
drawingCanvas = new DrawingCanvas();
drawingCanvas.setMinimumSize(new Dimension(300,700));
this.add(drawingCanvas);
JPanel toolBarPanel = getToolBarPanel();
this.add(drawingCanvas,BorderLayout.CENTER);
this.add(toolBarPanel,BorderLayout.SOUTH);
//create menu from class
this.menu = new Menu();
//create menu bar
JMenuBar menuBar = new JMenuBar();
//add menu to menuBar
menuBar.add(menu);
error: cannot resolve method 'add'
不确定为什么它不接受 add
方法
drawingFrame
class 接受来自 canvasEditor
和 DrawingCanvas
的对象,但不接受来自 Menu
class 的对象。
我想创建一个menuBar
并向其添加菜单,然后将其放在同一框架上——绘图框架
很确定这是一个简单的修复,但不确定如何修复它
public class Menu {
private JMenu borders;
您创建了一个名为 Menu
的 class 并在此 class 中创建了一个 JMenu
的实例。
this.menu = new Menu();
//create menu bar
JMenuBar menuBar = new JMenuBar();
//add menu to menuBar
menuBar.add(menu);
然后您创建 Menu
class 的实例并尝试将其添加到 JMenuBar,但无法完成,因为 Menu
class 是不是 Component
.
相反,您想将 borders
变量添加到菜单栏。
这意味着您需要在 Menu
class 中创建一个方法,例如:
public JMenu getJMenu()
{
return borders;
}
然后你使用:
//menuBar.add(menu);
menuBar.add( menu.getJMenu() );
public class Menu {
private JMenu borders;
//constructor
public Menu()
{
//crate object
//this.menuBar = new JMenuBar();
//------create menu items----
//menu item for borders
borders = new JMenu("Border");
// add border options
borders.setMnemonic(KeyEvent.VK_U);
//add border options
borders.add(new JMenuItem("Etched"));
borders.add(new JMenuItem("Raised"));
borders.add(new JMenuItem("Matte"));
borders.add(new JMenuItem("Tilted"));
borders.add(new JMenuItem("Compounded"));
JMenuItem quit = new JMenuItem("Quit");
quit.setMnemonic(KeyEvent.VK_Q);
borders.add(quit);
//set Accelerator
quit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, Event.CTRL_MASK));
//add action listener
//@Override
quit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
});
}
}
public class DrawingFrame extends JFrame{
protected CanvasEditor canvasEditor;
protected DrawingCanvas drawingCanvas;
private Menu menu;
public DrawingFrame()
{
this.setTitle("Drawing Application");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
drawingCanvas = new DrawingCanvas();
drawingCanvas.setMinimumSize(new Dimension(300,700));
this.add(drawingCanvas);
JPanel toolBarPanel = getToolBarPanel();
this.add(drawingCanvas,BorderLayout.CENTER);
this.add(toolBarPanel,BorderLayout.SOUTH);
//create menu from class
this.menu = new Menu();
//create menu bar
JMenuBar menuBar = new JMenuBar();
//add menu to menuBar
menuBar.add(menu);
error: cannot resolve method 'add'
不确定为什么它不接受 add
方法
drawingFrame
class 接受来自 canvasEditor
和 DrawingCanvas
的对象,但不接受来自 Menu
class 的对象。
我想创建一个menuBar
并向其添加菜单,然后将其放在同一框架上——绘图框架
很确定这是一个简单的修复,但不确定如何修复它
public class Menu {
private JMenu borders;
您创建了一个名为 Menu
的 class 并在此 class 中创建了一个 JMenu
的实例。
this.menu = new Menu();
//create menu bar
JMenuBar menuBar = new JMenuBar();
//add menu to menuBar
menuBar.add(menu);
然后您创建 Menu
class 的实例并尝试将其添加到 JMenuBar,但无法完成,因为 Menu
class 是不是 Component
.
相反,您想将 borders
变量添加到菜单栏。
这意味着您需要在 Menu
class 中创建一个方法,例如:
public JMenu getJMenu()
{
return borders;
}
然后你使用:
//menuBar.add(menu);
menuBar.add( menu.getJMenu() );