2015-05-21 2 views
0

Я относительно новичок в Java, и я пытаюсь сделать какую-то викторину. Я создал 3 JFrames, все в одном пакете. На моем основном фрейме есть две кнопки (одна для английской версии, а другая для немецкой версии). Я хочу переключить JFrames после нажатия этих кнопок (чтобы я мог, нажав «English», видеть и взаимодействовать с моей английской рамкой викторины). Присмотреться к нему не помогло, потому что я на самом деле не испытывал этого. Возможно ли это сделать так? Если нет, как я могу это сделать?Переключение между несколькими JFrames

ответ

5

Стандартным подходом является использование Card Layout, что позволяет использовать тот же JFrame, когда вы заполняете его разными вещами в разных точках приложения. Поэтому вначале ваш JFrame отобразил экран загрузки, затем пользователь нажимает кнопку, и вы загружаете новый набор компонентов, не отбрасывая текущий JFrame, который у вас есть. В некоторых случаях вам также может потребоваться внести некоторые изменения в размер.

Трудно сказать, не видя никакого кода, но, как правило, то, что делается в том, что вы делаете что-то вроде так:

new Frame(args); 
this.dispose(); 

Код выше предполагает, что конструктор Frame заботится о запуске и решений компоненты видны. this.dispose(); располагает текущим JFrame (при условии, что ваш класс расширяет JFrame).

-1

Создайте одно окно Jframe. После этого создайте JPanels со всеми такими компиляторами, как кнопки, текстовые поля и метки, которые вы хотите. Убедитесь, что панель имеет тот же размер, что и ваш Jframe. Работа с панелью примерно такая же, как у JFrame's, код мудрый.

Этот код будет сшить все вместе для вас:

panel.setSize(Jframe.getSize()) //That wont 
    panel.add(button); //Just remember you need to add more code to position the buttons correctly. 
         //If you using netbeans builder: 
         //You just have to use this one line in the constructor/intialiser method 
    frame.add(panel); //This will add the panel to the Jframe/Window 
         //No need to add extra code for positioning. 

Если вы хотите, чтобы переключаться между панелями. В пресс-метод кнопки, используйте этот

frame.setContentPane(panel); //panel = panel you want to change too. 
    frame.repaint();    //Ensures that the frame swaps to the next panel and doesn't get stuck. 
    frame.revalidate();   //Ensures that the frame swaps to the next panel and doesn't get stuck. 

При первом запуске приложения Java, вы должны установить панель контента или иначе это будет выглядеть как пустое окно.

 frame.setContentPane(panel); //Starting Panel 
    frame.setVisible(true);  //Make the frame visible 

Извините, если объяснение плохое, у меня недостаточно времени, чтобы полностью объяснить это.

0

У вас есть две кнопки в рамке 1 справа? Итак, сначала дважды нажмите кнопку, на которой написано «Английский». Допустим, что имя переменной для этой кнопки - jButton1. Внутри этой кнопки введите это.

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
    this.dispose(); 
    EnglishFrame eng = new EnglishFrame(); 
    eng.setVisible(true); 
} 

Затем дважды щелкните по другой кнопке, которая говорит «немецкий» (jButton2). Внутри этого типа это.

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { 
     this.dispose(); 
     GermanFrame german = new GermanFrame(); 
     german.setVisible(true); 
    } 

this.dispose() - Это заставит окно JFrame закрыть

Затем вы создаете объект из двух других форм. (В вашем случае форма для английского и немецкого языков)

.setVisible (true) - Это покажет вам форму.

+0

@Vivi Huber - проверьте, работает ли это для вас ... – ShanD

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