我的JRadioButton在我跑步时没有显示但是当我点击该区域时它显示

时间:2016-09-27 10:39:32

标签: java swing netbeans netbeans-8 jradiobutton

你好我在netbeans 8.1中遇到这个问题,当我运行我的简单swing应用程序时。我的框架只显示一个单选按钮和第二个单选按钮,当我选择它显示的区域时,当我取消选择它时消失。 检查以下图像

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);

}
}

提前谢谢!!

1 个答案:

答案 0 :(得分:2)

事情是:您必须了解JFrame正在使用 LayoutManager 来组织您添加的项目。

将代码更改为

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

会给你一个框架,显示顶部的一个按钮;另一个在窗口的底部(因为,默认情况下,JFrame使用BorderLayout来组织其子项)。

换句话说:只要您想使用多个组件,就必须先坐下来思考如何组织这些组件。然后选择LayoutManager,例如BorderLayout,它提供了最简单的方法来实现#34;结构"你决定使用。