我是 java 的新手,我在 Swing 中制作的游戏遇到了问题。我有一个类 guiPulUp,它有按钮和一个文本字段。其中一个按钮是“魔术”。我正在努力做到这一点,因此如果您单击 Magic 按钮,则会出现一个 JFrame,另一个称为 guiPullUpMagic,并带有预设的“Spell”按钮。这甚至可能吗?或者还有一种方法可以使用 .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
}
}
}
}