2016-09-27 3 views
1

Привет, я сталкиваюсь с этой проблемой в netbeans 8.1, когда запускаю мое простое приложение для качания. В моем кадре отображается только один переключатель и второй переключатель, когда я выбираю в той области, которую он показывает, и когда я отменю выбор, он исчезает. Проверьте изображения нижеMy JRadioButton не показывает, когда я запускаю, но когда я нажимаю на эту область, он показывает

When I run my swing application

When I click on the radio button area it shows

Исходный код:

import java.awt.Dimension; 
import java.awt.Toolkit; 
import javax.swing.JFrame; 
import javax.swing.JRadioButton; 
public class MainClass { 
private JFrame mainFrame; 
private JRadioButton radStudent,radTeacher; 

public MainClass(){ //Constructor of main class 
    prepareGUI(); 
} 
public static void main(String arg[]){ 
    MainClass main = new MainClass(); 
} 

private void prepareGUI(){ //GUI 
    mainFrame = new JFrame("Select any one"); 
    mainFrame.setSize(300,200); 
    mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    mainFrame.setResizable(false); 
    mainFrame.setVisible(true); 

    //Frame position set 
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
int height = screenSize.height; 
int width = screenSize.width; 
mainFrame.setLocationRelativeTo(null); 

    //radio for employee 
    radStudent = new JRadioButton("Student"); 
    radStudent.setBounds(10,10,100,20); 

    //radio for Teachers 
    radTeacher = new JRadioButton("Teacher"); 
    radTeacher.setBounds(110,10,100,20); 

    mainFrame.add(radStudent); 
    mainFrame.add(radTeacher); 

} 
} 

Спасибо заранее !!

+2

Вам нужно «добавить()' components и _then_ call 'setVisible()'. –

+0

'mainFrame.setVisible (true);' Это должно быть сделано после добавления всех компонентов и сразу после вызова 'pack()'. –

ответ

2

вещь: вы должны понимать, что JFrame использует LayoutManager организовать элементы, которые вы добавить к нему.

Изменение кода

mainFrame.add(radStudent, BorderLayout.PAGE_START); 
mainFrame.add(radTeacher, BorderLayout.PAGE_END); 

даст вам кадр, который показывает одну кнопку на верхней части; а другой в нижней части окна (потому что по умолчанию JFrame использует BorderLayout для организации своих детей).

Другими словами: как только вы хотите использовать более одного компонента, вам нужно сесть первым и придумать, как организовать эти компоненты. И затем вы выбираете этот LayoutManager, например BorderLayout, который обеспечивает самый простой способ добраться до той «структуры», которую вы решили использовать.

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

  • Нет связанных вопросов^_^