我有两个gui课程,Mall和Store。通过运行Mall类,创建了一个gui,其中包含一些其他按钮,包括" store"按钮。当"存储"单击按钮,将为商店gui创建一个单独的窗口。基本上,当"存储"时,Mall类会调用Store构造函数。单击按钮。
从Mall类调用Store构造函数时,会显示Store中的gui。但是当我尝试按下箭头按钮时没有任何反应。这是我的商城类
import javax.swing.*;
public class Mall extends JFrame implements KeyListener, ActionListener {
public static Customer c = new Customer("James");
private JFrame frame = new JFrame(); // only used to show dialog boxes
private JPanel panel;
//and other private JLabels, ImageIcons, and JButtons
public static void main(String[] args) {
new Mall();
}
public Mall() {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.addKeyListener(this);
// and initialization of gui components
store.addActionListener(this);
this.add(panel);
// panel.add(....); etc.
}
@Override // and other method implementations
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER) {
if(menuSelection == 1) {
new Store(c);
}
// other conditions
}
// and other conditions
}
}
这是我的Store类:
import javax.swing.*;
public class Store implements KeyListener, ActionListener {
JFrame frame1 = new JFrame();
private JPanel panel1;
//and other private JLabels, ImageIcons, and JButtons
// works fine if I have this method, but I want it to be called from the Mall class
public static void main(String[] args) {
new Store(new Customer("Bon")); }
public Store(Customer c1) {
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setTitle("Store");
frame1.setVisible(true);
// and initialization of gui components
frame1.addKeyListener(this);
frame1.add(panel1);
// panel1.add(....); etc.
}
@Override // and other method implementations
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_UP) {
if(storeSelection==1) {
highlighter.setBounds(100,50,50, 50); // just for highlighting a button
// other conditions
}
// and other conditions
}
}
Mall类在我的代码中运行得非常好。如果调用Store类中的main方法,Store类也可以正常工作。从Mall类调用它时只到达Store构造函数(即只有图形)。我想知道如何从Mall类调用Store gui。
编辑:
行为:
如果Store类中有一个main方法,那么Store gui就可以工作(public static void main(String [] args){new Store(new Customer(" James"));})
但商店gui只显示gui并且当Mall类调用它时不起作用(例如按下按钮)
问题:从Mall类调用时,如何使Store类工作?
答案 0 :(得分:0)
根据您向我们展示的内容,似乎没有任何不一致之处。
我可以推荐的,只是为了测试它是否有效:
创建一个JButton,并指定一个Action Performed,以便它调用Store Class
JButton button = new JButton("Test");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new Store(c);
}
}
如果这样做,我们可以确定您的KeyPressed事件处理程序存在问题,然后我们可以从那里开始。
如果按钮确实有效,您可以使用按钮而不是RadioButton组上的按键事件。例如:
JButton button = new JButton("Test");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(menuSelection == 1) {
new Store(c);
}
}
}
希望这能回答你的问题!
让我知道结果。