Java 关于项目选择的对话
我构造了一个GameFrame类,它有一个带有Java 关于项目选择的对话,java,swing,awt,Java,Swing,Awt,我构造了一个GameFrame类,它有一个带有jmenubar的JFrame,并在菜单中添加了一些项目。出于面向对象的原因,我将actionlistener类从游戏框架中分离出来(实现我自己的类,并将其作为参数传递给frames jmenubar) 问题是,当选择了一个JmenuItems时,它会弹出一个对话框,要求用户输入URL。但此对话框仅在选择菜单项时创建,因此如何避免执行以下操作?(这不是很糟糕) 我想避免在我的eventhandler类中创建swing组件,并避免在我的componen
jmenubar
的JFrame,并在菜单中添加了一些项目。出于面向对象的原因,我将actionlistener类从游戏框架中分离出来(实现我自己的类,并将其作为参数传递给frames jmenubar)
问题是,当选择了一个JmenuItems
时,它会弹出一个对话框,要求用户输入URL。但此对话框仅在选择菜单项时创建,因此如何避免执行以下操作?(这不是很糟糕)
我想避免在我的eventhandler类中创建swing组件,并避免在我的component类中创建eventhandler,但我看不到解决方法。创建一个自定义的
ActionLIstener
,并为构造函数传递它需要引用的项的引用(即使您放置在侦听器中的对象与您在actionPerformed()
方法中需要的对象相同
class MyActionListener implements ActionListener {
JMenuItem item;
MyActionListener(JMenuItem item) {
this.item = item;
}
public void actionPerformed(ActionEvent e) {
// here you have the reference for the item. Printing the text:
System.out.println(item.getText());
}
}
这种方法的缺点是每个JMenuItem都需要一个监听器。我不明白为什么它不应该是非常面向对象的。你能详细说明一下吗?不管怎样,为什么不创建JDialog,在其中初始化其余组件,并使其在actionPerformed中可见,一旦获得URL就不可见?还有考虑
class MyActionListener implements ActionListener {
JMenuItem item;
MyActionListener(JMenuItem item) {
this.item = item;
}
public void actionPerformed(ActionEvent e) {
// here you have the reference for the item. Printing the text:
System.out.println(item.getText());
}
}