[英]JFrame and ActionListener
我是Java的新手,而我在Swing中制作的游戏存在问题。 我有一个guiPulUp类,它具有按钮和一个文本字段。 按钮之一是“魔术”。 我试图做到这一点,所以如果您单击Magic按钮,则会出现一个带有预设“ Spell”按钮的JFrame(另一个名为guiPullUpMagic)。 那有可能吗? 还是还有一种使用.setVisible的方法使单击时的拼写GUI可见? 请帮忙! 我在互联网上找不到与此相关的任何主题。 谢谢! (如果还有其他错误,请告诉我)另外,我对如何使一个类中的变量在另一个类中工作感到非常困惑,例如让JButton“ buttonMAGIC”在guiPullUpMagic类中工作。
供参考,这是我的代码(非常大!):
import javax.swing.*;
import java.lang.Math.*;
import java.awt.event.*;
/**
* main GUI class
*/
public class guiPullUp extends JFrame
{
public static void main(String[] args)
{
new guiPullUp();
}
//declaring buttons for main GUI
private JButton buttonOK;
private JButton buttonUP;
private JButton buttonDOWN;
private JButton buttonRIGHT;
private JButton buttonLEFT;
private JButton buttonMAGIC;
private JButton buttonRUN;
private JTextField userINPUT;
private JLabel healthDisplay;
public guiPullUp()
{
this.setSize(600,500);
this.setTitle("Xenix V_1");
this.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE);
//button names to appear on panel1*
//*button coordinates needed
JButton buttonOK = new JButton ("OK");
JButton buttonUP = new JButton ("Up");
JButton buttonDOWN = new JButton ("Down");
JButton buttonRIGHT = new JButton ("Right");
JButton buttonLEFT = new JButton ("Left");
JButton buttonMAGIC = new JButton ("Magic");
JButton buttonRUN = new JButton ("RUN");
JTextField userINPUT = new JTextField(30);
JLabel healthDisplay = new JLabel("Health: ");
JPanel panel1 = new JPanel ();
ButtonListener bl = new ButtonListener();
buttonOK.addActionListener(bl);
buttonUP.addActionListener(bl);
buttonDOWN.addActionListener(bl);
buttonRIGHT.addActionListener(bl);
buttonLEFT.addActionListener(bl);
buttonMAGIC.addActionListener(bl);
buttonRUN.addActionListener(bl);
panel1.add(buttonOK);
panel1.add(buttonDOWN);
panel1.add(buttonRIGHT);
panel1.add(buttonLEFT);
panel1.add(buttonMAGIC);
panel1.add(buttonRUN);
panel1.add(healthDisplay);
panel1.add(userINPUT);
this.add(panel1);
this.setVisible(true);
}
//declaring variables "counters" for magic count,
//health count, etc.
int healthMAX = 100;
int healthMINIMUM = 0;
int magicMAX = 100;
int magicMINIMUM = 0;
int walletSizeMAX = 9999;
int walletSizeMINIMUM = 0;
/**
* class used to create events
* based on button sources
*/
public class ButtonListener implements
ActionListener
{
public void actionPerformed (ActionEvent e)
{
//Haven't made these codes yet but some WILL need to bring up a GUI
}
}
}
}
guiPullUpMagic类:
import javax.swing.*;
import java.awt.event.*;
import java.lang.Math.*;
/**
* class used to pull up the "spells" GUI
*/
public class guiPullUpMagic extends JFrame
{
public void magic(String[] args)
{
new guiPullUpMagic();
}
private JButton buttonFIREMAGIC;
private JButton buttonICEMAGIC;
private JButton buttonHEALMAGIC;
private JButton buttonSHOCKMAGIC;
public guiPullUpMagic()
{
this.setSize(400,400);
this.setTitle("Spells");
this.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE);
//button names to appear on panel2*
//*button coordinates needed
JButton buttonFIREMAGIC = new JButton ("FireBall");
JButton buttonICEMAGIC = new JButton ("Ice Flurry");
JButton buttonSHOCKMAGIC = new JButton ("Spark");
JButton buttonHEALMAGIC = new JButton ("Heal Minor Wounds");
JPanel panel2 = new JPanel();
ButtonListener bl = new ButtonListener();
buttonFIREMAGIC.addActionListener(bl);
buttonICEMAGIC.addActionListener(bl);
buttonSHOCKMAGIC.addActionListener(bl);
buttonHEALMAGIC.addActionListener(bl);
panel2.add(buttonFIREMAGIC);
panel2.add(buttonICEMAGIC);
panel2.add(buttonSHOCKMAGIC);
panel2.add(buttonHEALMAGIC);
this.add(panel2);
this.setVisible(false);
}
public class ButtonListener implements
ActionListener
{
public void actionPerformed (ActionEvent e)
{
if (e.getSource() == buttonMAGIC); //THIS is where I'll need
//the buttonMAGIC variable
//from guiPullUp
{
//code to bring up the guiPullUpMagic GUI
}
}
}
}
如果要将一个JFrame的字段传递给另一个JFrame,则可以使用该控件将ComponentEvent发送到该jframe
例如,您可以定义一个ComponentEvent(例如ShowPopUpEvent)来显示JFrame A,而A会监听。 每当您想要显示A并将该JButton传递给A时,您都可以调度该事件。
注意更改
ActionListener
在GuiPullUp
类中GuiPullUp
GuiPullUpMagic
类是JDialog
actionPerformed
类GuiPullUp:
public class GuiPullUp extends JFrame implements ActionListener {
//declaring buttons for main GUI
private JButton buttonOK;
private JButton buttonUP;
private JButton buttonDOWN;
private JButton buttonRIGHT;
private JButton buttonLEFT;
private JButton buttonMAGIC;
private JButton buttonRUN;
private JTextField userINPUT;
private JLabel healthDisplay;
public GuiPullUp() {
this.setSize(600, 500);
this.setTitle("Xenix V_1");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
buttonOK = new JButton("OK");
buttonUP = new JButton("Up");
buttonDOWN = new JButton("Down");
buttonRIGHT = new JButton("Right");
buttonLEFT = new JButton("Left");
buttonMAGIC = new JButton("Magic");
buttonRUN = new JButton("RUN");
userINPUT = new JTextField(30);
healthDisplay = new JLabel("Health: ");
JPanel panel1 = new JPanel();
buttonOK.addActionListener(this);
buttonUP.addActionListener(this);
buttonDOWN.addActionListener(this);
buttonRIGHT.addActionListener(this);
buttonLEFT.addActionListener(this);
buttonMAGIC.addActionListener(this);
buttonRUN.addActionListener(this);
panel1.add(buttonOK);
panel1.add(buttonDOWN);
panel1.add(buttonRIGHT);
panel1.add(buttonLEFT);
panel1.add(buttonMAGIC);
panel1.add(buttonRUN);
panel1.add(healthDisplay);
panel1.add(userINPUT);
this.add(panel1);
}
//declaring variables "counters" for magic count,
//health count, etc.
int healthMAX = 100;
int healthMINIMUM = 0;
int magicMAX = 100;
int magicMINIMUM = 0;
int walletSizeMAX = 9999;
int walletSizeMINIMUM = 0;
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals(buttonMAGIC.getActionCommand())) {
new GuiPullUpMagic(this).setVisible(true);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
GuiPullUp guiPullUp = new GuiPullUp();
guiPullUp.setVisible(true);
}
});
}
}
类GuiPullUpMagic
public class GuiPullUpMagic extends JDialog implements ActionListener {
private JButton buttonFIREMAGIC;
private JButton buttonICEMAGIC;
private JButton buttonHEALMAGIC;
private JButton buttonSHOCKMAGIC;
public GuiPullUpMagic(JFrame parent) {
super(parent);
this.setSize(400, 400);
this.setTitle("Spells");
buttonFIREMAGIC = new JButton("FireBall");
buttonICEMAGIC = new JButton("Ice Flurry");
buttonSHOCKMAGIC = new JButton("Spark");
buttonHEALMAGIC = new JButton("Heal Minor Wounds");
JPanel panel2 = new JPanel();
buttonFIREMAGIC.addActionListener(this);
buttonICEMAGIC.addActionListener(this);
buttonSHOCKMAGIC.addActionListener(this);
buttonHEALMAGIC.addActionListener(this);
panel2.add(buttonFIREMAGIC);
panel2.add(buttonICEMAGIC);
panel2.add(buttonSHOCKMAGIC);
panel2.add(buttonHEALMAGIC);
this.add(panel2);
}
@Override
public void actionPerformed(ActionEvent e) {
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.