java - 使用 Spring 问题制作带有菜单栏的 Swing 框架

标签 java spring swing spring-ioc

我正在使用 spring 制作一个带有菜单栏的 Swing 框架,我的问题是,当我启动框架时,菜单栏根本不出现,我将向您展示 beans.xml 和 bean 类,请告诉为什么菜单栏没有出现,我有 4 个 bean,如下:

MenuItem bean:

public class MyMenuItem extends JMenuItem {
private ArrayList<String> menuItemNames;

public MyMenuItem() {   }

public ArrayList<String> getMenuItemNames() {
    return menuItemNames;
}

public void setMenuItemNames(ArrayList<String> menuItemNames) {
    this.menuItemNames = menuItemNames;
   }
}

菜单 bean:

public class MyMenu extends JMenu {

private static final long serialVersionUID = 1L;
private MyMenuItem myMenuItem;
private ArrayList<String> menuNames;
private MyMenuItem menuItem;

public MyMenu() {}

@PostConstruct
public void init() {
    for (String menuItemName : myMenuItem.getMenuItemNames()) {
        menuItem = new MyMenuItem();
        menuItem.setText(menuItemName);
        this.add(menuItem);

    }
}

public MyMenuItem getMyMenuItem() {
    return myMenuItem;
}

public void setMyMenuItem(MyMenuItem myMenuItem) {
    this.myMenuItem = myMenuItem;
}

public ArrayList<String> getMenuNames() {
    return menuNames;
}

public void setMenuNames(ArrayList<String> menuNames) {
    this.menuNames = menuNames;
     }
 }

菜单栏 bean:

public class MyMenuBar extends JMenuBar {

private static final long serialVersionUID = 1L;
private MyMenu myMenu;

public MyMenu getMyMenu() {
    return myMenu;
}

public void setMyMenu(MyMenu myMenu) {
    this.myMenu = myMenu;
}

public MyMenuBar() {

}

@PostConstruct
public void init() {
    for (String menu : myMenu.getMenuNames()) {
        MyMenu mm = new MyMenu();
        mm.setText(menu);
        this.add(mm);
        }
    }
}

和框架 bean:

public class MainFrame extends JFrame {
/**
 * 
 */
private static final long serialVersionUID = 1L;
private MyMenuBar myMenuBar;

@PostConstruct
public void init(){
    this.add(myMenuBar);        
}

public MainFrame() {
}

public MyMenuBar getMyMenuBar() {
    return myMenuBar;
}

public void setMyMenuBar(MyMenuBar myMenuBar) {
    this.myMenuBar = myMenuBar;
  }
}

这是我的 beans 配置文件 beans.xml:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"

xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd">

<bean id="menuItem" class="com.spring.frame.MyMenuItem" init-method="init">
    <property name="menuItemNames">
        <bean class="org.springframework.beans.factory.config.ListFactoryBean">
            <property name="targetListClass">
                <value>java.util.ArrayList</value>
            </property>
            <property name="sourceList">
                <list>
                    <value>Copy</value>
                    <value>Paste</value>
                    <value>Cut</value>
                </list>
            </property>
        </bean>
    </property>
</bean>
<bean id="menu" class="com.spring.frame.MyMenu" init-method="init">
    <property name="myMenuItem">
        <ref bean="menuItem"></ref>
    </property>
    <property name="menuNames">
        <bean class="org.springframework.beans.factory.config.ListFactoryBean">
            <property name="targetListClass">
                <value>java.util.ArrayList</value>
            </property>
            <property name="sourceList">
                <list>
                    <value>File</value>
                    <value>Edit</value>
                </list>
            </property>
        </bean>
    </property>
</bean>
<bean id="menuBar" class="com.spring.frame.MyMenuBar" init-method="init">
    <property name="myMenu">
        <ref bean="menu" />
    </property>
</bean>
<bean id="frame" class="com.spring.frame.MainFrame" init-method="init">
    <property name="myMenuBar">
        <ref bean="menuBar"></ref>
    </property>
</bean>

谢谢,如果代码很长,抱歉。

最佳答案

setJMenuBar(myMenuBar); 代替 this.add(myMenuBar);

关于java - 使用 Spring 问题制作带有菜单栏的 Swing 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15986228/

相关文章:

java - 为 JGit 指定 SSH key

java - 在自定义 CellRenderer 中覆盖 createToolTip()

spring - spring 请求映射中的多个正斜杠

java - 如何在 JDesktopPane 中获取 JInternalFrames 的 z 顺序

java - 使用 mongo-java-driver 在 Matlab 中进行高级 mongoDB 查询

java - 从 ArrayList<T> 构建 JTable

java - 使用一对一关系 hibernate 进行更新

java - 无法在 Spring mvc 中流式传输视频

java - 在 JTextPane (Java 7) 中包装长词

java - 无法从 ActionPerformed 调用构造函数组件