Я новичок, и мне нужна помощь с кодом, создающим графический интерфейс. В основной функции я использую конструктор по умолчанию для графического интерфейса класса, который создает фрейм с меню. Затем я хочу, чтобы основная функция ждала выполнения остальной части кода (которая запустит симуляцию), пока пользователь не нажмет кнопку START JButton в кадре графического интерфейса. Как я могу сделать это без использования цикла? Ниже приведен мой код, довольно длинный из-за GroupLayout, который я использую
package simulation;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.HashMap;
public class GUI extends JFrame {
//by default map set to riverside
public String mapName = "riverside";
//user number of creatures input is stored in a hashmap
HashMap mapOfCreatures = new HashMap();
public GUI()
{
this.setTitle("Simulation Of Evolution");
this.setDefaultCloseOperation(3);
setVisible(true);
this.setSize(500, 500);
this.setLocation(300, 300);
initComponents();
}
public void initComponents()
{
biomes.add(island);
biomes.add(riverside);
biomes.add(seaside);
island.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mapName = "island";
}
});
riverside.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mapName = "riverside";
}
});
seaside.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mapName = "seaside";
}
});
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mapOfCreatures.put("wolves", (Integer)l1.getValue());
mapOfCreatures.put("humans", (Integer)l2.getValue());
mapOfCreatures.put("cockroach", (Integer)l3.getValue());
mapOfCreatures.put("dinos", (Integer)l4.getValue());
mapOfCreatures.put("bird", (Integer)l5.getValue());
mapOfCreatures.put("fish", (Integer)l6.getValue());
System.out.println(mapName);
dispose();
}
});
//this.getContentPane().setBackground(Color.BLUE);
GroupLayout layout = new GroupLayout(getContentPane());
this.getContentPane().setLayout(layout);
/*here is the grouplayout, it is long so i deleted it here/*
//components
JRadioButton island = new JRadioButton("Island");
JRadioButton riverside = new JRadioButton("Riverside");
JRadioButton seaside = new JRadioButton("Seaside");
ButtonGroup biomes = new ButtonGroup();
JButton button = new JButton("START");
JLabel label1 = new JLabel("Please choose number of creatures in the beginning of simulation:");
JLabel label2 = new JLabel("Please choose a biome:");
JLabel label3 = new JLabel("Wolves");
JLabel label4 = new JLabel("Humans");
JLabel label5 = new JLabel("Cockroach");
JLabel label6 = new JLabel("Dinos");
JLabel label7 = new JLabel("Bird");
JLabel label8 = new JLabel("Fish");
JSpinner l1 = new JSpinner(new SpinnerNumberModel(1, 1, 300, 1));
JSpinner l2 = new JSpinner(new SpinnerNumberModel(1, 1, 300, 1));
JSpinner l3 = new JSpinner(new SpinnerNumberModel(1, 1, 300, 1));
JSpinner l4 = new JSpinner(new SpinnerNumberModel(1, 1, 300, 1));
JSpinner l5 = new JSpinner(new SpinnerNumberModel(1, 1, 300, 1));
JSpinner l6 = new JSpinner(new SpinnerNumberModel(1, 1, 300, 1));
public static void main(String[] args) {
new GUI();
/*here will be rest of code, which should be executed when user
presses START Jbutton/*
}
}
Мой учитель сказал, что мне не следует использовать какие-либо циклы, возможно, попробую обратные вызовы или потоки, но я понятия не имею, как это реализовать
Я новичок, и мне нужна помощь с кодом, создающим графический интерфейс. В основной функции я использую конструктор по умолчанию для графического интерфейса класса, который создает фрейм с меню. Затем я хочу, чтобы основная функция ждала выполнения остальной части кода (которая запустит симуляцию), пока пользователь не нажмет кнопку START JButton в кадре графического интерфейса. Как я могу сделать это без использования цикла? Ниже приведен мой код, довольно длинный из-за GroupLayout, который я использую [code]package simulation; import javax.swing.*; import java.awt.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.util.HashMap;
public class GUI extends JFrame { //by default map set to riverside public String mapName = "riverside"; //user number of creatures input is stored in a hashmap HashMap mapOfCreatures = new HashMap();
public GUI() { this.setTitle("Simulation Of Evolution");
GroupLayout layout = new GroupLayout(getContentPane()); this.getContentPane().setLayout(layout);
/*here is the grouplayout, it is long so i deleted it here/*
//components JRadioButton island = new JRadioButton("Island"); JRadioButton riverside = new JRadioButton("Riverside"); JRadioButton seaside = new JRadioButton("Seaside"); ButtonGroup biomes = new ButtonGroup(); JButton button = new JButton("START"); JLabel label1 = new JLabel("Please choose number of creatures in the beginning of simulation:"); JLabel label2 = new JLabel("Please choose a biome:"); JLabel label3 = new JLabel("Wolves"); JLabel label4 = new JLabel("Humans"); JLabel label5 = new JLabel("Cockroach"); JLabel label6 = new JLabel("Dinos"); JLabel label7 = new JLabel("Bird"); JLabel label8 = new JLabel("Fish"); JSpinner l1 = new JSpinner(new SpinnerNumberModel(1, 1, 300, 1)); JSpinner l2 = new JSpinner(new SpinnerNumberModel(1, 1, 300, 1)); JSpinner l3 = new JSpinner(new SpinnerNumberModel(1, 1, 300, 1)); JSpinner l4 = new JSpinner(new SpinnerNumberModel(1, 1, 300, 1)); JSpinner l5 = new JSpinner(new SpinnerNumberModel(1, 1, 300, 1)); JSpinner l6 = new JSpinner(new SpinnerNumberModel(1, 1, 300, 1));
public static void main(String[] args) { new GUI(); /*here will be rest of code, which should be executed when user presses START Jbutton/* }
} [/code] Мой учитель сказал, что мне не следует использовать какие-либо циклы, возможно, попробую обратные вызовы или потоки, но я понятия не имею, как это реализовать
Я новичок в Java и пытаюсь создать программу, которая просит угадать случайное число от 1 до 77. Как я могу сделать так, чтобы цикл while в этом коде запускался только тогда, когда ответ был предоставлен в JField, и кнопка была нажата? Прямо сейчас...
Я новичок в Java и пытаюсь создать программу, которая просит угадать случайное число от 1 до 77. Как я могу сделать так, чтобы цикл while в этом коде запускался только тогда, когда ответ был предоставлен в JField, и кнопка была нажата? Прямо сейчас...
Я новичок в Java и пытаюсь создать программу, которая просит угадать случайное число от 1 до 77. Как я могу сделать так, чтобы цикл while в этом коде запускался только тогда, когда ответ был предоставлен в JField, и кнопка была нажата? Прямо сейчас...
Я новичок в Java и пытаюсь создать программу, которая просит угадать случайное число от 1 до 77. Как я могу сделать так, чтобы цикл while в этом коде запускался только тогда, когда ответ был предоставлен в JField, и кнопка была нажата? Прямо сейчас...