JAVA, Как заставить основную функцию ждать выполнения кода до тех пор, пока не будет нажата JButtonJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 JAVA, Как заставить основную функцию ждать выполнения кода до тех пор, пока не будет нажата JButton

Сообщение Anonymous »

Я новичок, и мне нужна помощь с кодом, создающим графический интерфейс. В основной функции я использую конструктор по умолчанию для графического интерфейса класса, который создает фрейм с меню. Затем я хочу, чтобы основная функция ждала выполнения остальной части кода (которая запустит симуляцию), пока пользователь не нажмет кнопку 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/*
}

}
Мой учитель сказал, что мне не следует использовать какие-либо циклы, возможно, попробую обратные вызовы или потоки, но я понятия не имею, как это реализовать

Подробнее здесь: https://stackoverflow.com/questions/785 ... -is-presse
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как я могу заставить цикл while ждать нажатия JButton?
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Как я могу заставить цикл while ждать нажатия JButton?
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Как я могу заставить цикл while ждать нажатия JButton?
    Anonymous » » в форуме JAVA
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Как я могу заставить цикл while ждать нажатия JButton?
    Anonymous » » в форуме JAVA
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Как повторить функцию, пока кнопка нажата (новая система ввода Unity)
    Anonymous » » в форуме C#
    0 Ответы
    69 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»