Я немного новичок в java, и у меня проблема с игрой, которую я делаю в Swing. У меня есть класс, guiPulUp, который имеет кнопки и текстовое поле. Одна из кнопок - «Магия». Я пытаюсь сделать это так, если вы нажмете кнопку Magic, тогда появится JFrame, другая, называемая guiPullUpMagic, с предустановленными кнопками «Заклинание». Возможно ли это? Или существует также способ использования .setVisible, чтобы сделать графический интерфейс заклинания видимым при нажатии? Пожалуйста, помогите! Я не могу найти тему, связанную с этим в Интернете. Благодаря! (Если есть какие-либо другие ошибки, дайте мне знать) Кроме того, я получаю ОЧЕНЬ путают с тем, как заставить переменные, сделанные в одном классе, работать в другом, например, заставить мой JButton «buttonMAGIC» работать в моем классе guiPullUpMagic.JFrame и ActionListener
Для справки вот мой код (это довольно большой!):
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
}
}
}
}
Ну, я бы реализовать ActionListener в JFrame в моде: общественного класс guiPullUp расширяет JFrame реализует ActionListener { @Override общественный недействительный actionPerformed (ActionEvent е) { если (e.getSource() равно (buttonFIREMAGIC.)) { // fire magic } } – KernelPanic