gpt4 book ai didi

java - 从另一个类调用 JMenuBar

转载 作者:行者123 更新时间:2023-11-30 07:00:12 27 4
gpt4 key购买 nike

我有以下代码用于带有按钮的 GUI 和 JMenuBar 的代码。

MenuBarTest.java

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

public class MenuBarTest extends JFrame implements ActionListener
{
JFrame myMainWindow = new JFrame("This is my title");

JPanel firstPanel = new JPanel();

JButton btnTest = new JButton("Refresh Results");

GuiDMenuBar mbr;

public void runGUI()
{
myMainWindow.setBounds(10, 10, 800, 800);
myMainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

myMainWindow.setLayout(new GridLayout(1,1));

createFirstPanel();

myMainWindow.getContentPane().add(firstPanel);

myMainWindow.setJMenuBar(mbr.GuiDMenuBar());

myMainWindow.setVisible(true);
}

public void createFirstPanel()
{
firstPanel.setLayout(null);

btnTest.setBounds(100, 100, 200, 50);
btnTest.addActionListener(this);
firstPanel.add(btnTest);
}

public void actionPerformed(ActionEvent e)
{
if(e.getSource() == btnTest)
{
System.out.println("Hi");
}
}

public static void main(String[] args)
{
MenuBarTest mBT = new MenuBarTest();
mBT.runGUI();
}
}

GuiDMenuBar.java

package MenuBar;

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

public class GuiDMenuBar extends JMenuBar
{
JMenu m_PopUps;
public JCheckBoxMenuItem m_p_AllPopUps,m_p_NamePopUps,m_p_TextPopUps,m_p_SizePopUps,m_p_ToolTipPopUps;

public GuiDMenuBar()
{
setBorderPainted(true);
makePopUpMenu();
}

void makePopUpMenu()
{
m_PopUps = new JMenu("Pop Ups");
m_PopUps.setMnemonic('P');

m_p_AllPopUps = new JCheckBoxMenuItem("Enable All Pop Ups");
m_p_NamePopUps = new JCheckBoxMenuItem("Enable Name Pop Ups");
m_p_SizePopUps = new JCheckBoxMenuItem("Enable Automatic Sizing Pop Ups");
m_p_TextPopUps = new JCheckBoxMenuItem("Enable Add Contents Pop Ups");
m_p_ToolTipPopUps = new JCheckBoxMenuItem("Enable Add ToolTips Pop Ups");

m_p_AllPopUps.addItemListener(new ItemListener()
{
public void itemStateChanged(ItemEvent e)
{
if(m_p_AllPopUps.getState())
{
m_p_NamePopUps.setState(true);
m_p_SizePopUps.setState(true);
m_p_TextPopUps.setState(true);
m_p_ToolTipPopUps.setState(true);
}

else
{
m_p_NamePopUps.setState(false);
m_p_SizePopUps.setState(false);
m_p_TextPopUps.setState(false);
m_p_ToolTipPopUps.setState(false);
}
}
});

m_PopUps.add(m_p_AllPopUps);
m_PopUps.addSeparator();
m_PopUps.add(m_p_NamePopUps);
m_PopUps.add(m_p_SizePopUps);
m_PopUps.add(m_p_TextPopUps);
m_PopUps.add(m_p_ToolTipPopUps);

add(m_PopUps);
}

public void checkState()
{
System.out.println(m_p_AllPopUps.getState());
System.out.println(m_p_NamePopUps.getState());
System.out.println(m_p_SizePopUps.getState());
System.out.println(m_p_TextPopUps.getState());
System.out.println(m_p_ToolTipPopUps.getState());
}
}

我的目标是将 JMenuBar 添加到 JFrame。然而,当我编译时,我收到一条错误消息,指出找不到 GuiDMenuBar()。我将不胜感激任何帮助。谢谢

最佳答案

您正在尝试调用一个构造函数,就好像它是一个静态方法一样。不。而是通过将构造函数作为构造函数调用来创建您的实例,将实例分配给您的变量,然后使用它。变化:

// GuiDMenuBar mbr;
GuiDMenuBar mbr = new GuiDMenuBar(); // create instance and assign

public void runGUI()
{
// ....

// myMainWindow.setJMenuBar(mbr.GuiDMenuBar());
myMainWindow.setJMenuBar(mbr); // use instance

myMainWindow.setVisible(true);
}

接下来我们将讨论null布局和setBounds(...)

的弊端

关于java - 从另一个类调用 JMenuBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30831750/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com