2014-08-27 2 views
-2

Я работаю над графическим интерфейсом Java (Swing, AWT). Запись данных в моем приложении должна выполняться через JFrame. На самом деле у меня есть 10 объектов, которые требуют 10 JFrame с. Я использовал цикл for, но JFrame s, похоже, не дождался ввода данных.Приложение Java GUI

Я использовал Thread.sleep(), но зря. Любая помощь?

Вот некоторые из моего кода:

for (int i=0; i < VMnumber; i++) // VMnumber : number of virtual machines to instantiate 
{ 
    mips=0; 
    frame=new VMcaracteristics(); // VMcaracteristics is a JFrame to enter VMs caracteristics 
    frame.setVisible(true); 
    while (!VMcaracteristicsFlag) // Current frame is still open 
    { 
     Thread.sleep(100); 
    } // create a VM correspondent to the current frame 
    vm = new Vm(vmid, brokerId, mips, pesNumber, ram, bw, size, vmm, new CloudletSchedulerTimeShared()); 
    vmlist.add(vm); 
} 
+2

Можем ли мы получить код? Возможно, инициализация и часть, включающая петли? – Mshnik

+0

Что вы пробовали? Любой пример кода? –

+1

Вы ищете кнопку «отправить» или что-то, что обнаруживает какие-либо изменения в конфигурации, как это происходит? Я не думаю, что это прямо сейчас, без каких-либо кодов/деталей о том, что именно вы хотите, и что происходит в данный момент. – user2813274

ответ

5

Вы ищете JOptionPane.

String data = JOptionPane.showInputDialog(
    null, //parent window 
    "Hi! Enter some data, please:", //text 
    "Input", //title 
    JOptionPane.PLAIN_MESSAGE //icon? 
); 

Изучите документацию, чтобы найти наилучший способ для ваших нужд.

Edit: JOptionPane фактически блокирует, так что вы можете цикл:

String[] data = new String[10]; 
for(int i = 0; i < 10; i++) { 
    data[i] = JOptionPane.showXXX(...); 
} 
1

Ваш основной вопрос (на мой взгляд) не так много, как отображать 10 окон, один за другим, но, скорее, как получить несколько битов информации от пользователя простым и простым способом, как для вас, так и для пользователя. Если вы мертвы, чтобы бросить кучу окон у пользователя, то да, используйте J4v4-решение нескольких JOptionPanes (1+ к его ответу) или модальные JDialogs (что JOptionPane на самом деле является одним из вариантов). Если вам нужен лучший пользовательский интерфейс, хотя подумайте о том, чтобы показать пользователю все поля ввода, возможно, в многострочном JTable или в нескольких JPanels, хранящихся в контейнере GridLayout, хранящемся в JScrollPane. Если вам абсолютно необходимо отобразить 10 представлений последовательно, рассмотрите возможность использования одного CardLayout с помощью JPanel, который затем отображает 10-значную «карточку» JPanels.

Кроме того, вы никогда не хотите позвонить Thread.sleep(...) или while (true) на резьбе Качели событий, так как это будет блокировать этот важный поток, один, который необходим для всех взаимодействий Качели рисования и пользователя, и будет эффективно поместить всю вашу заявку в сон.

Смежные вопросы