Как создать вспомогательный класс JRadioButton, чтобы я мог легко использовать JRadioButton - PullRequest
0 голосов
/ 26 апреля 2019

Я самостоятельно изучаю Java, используя бесплатный онлайн-класс Stanford CS106A. Я построил Java-класс «ClickForStar», который включает JRadioButton, предоставляющий 3 варианта: маленький, средний и большой, где пользователь может выбрать, какой размер звездочек будет сгенерирован, когда он нажимает на холст. Мой JRadioButton отлично работает здесь.

Что я хочу сделать, так это создать вспомогательный класс «JRadioButtonSizeSelectClass» с моим кодом JRadioButton, чтобы я мог легко вызывать этот вспомогательный класс в любой программе, в которой я хочу JRadioButton, предоставляя 3 варианта: маленький, средний, большой. Это где мне нужна помощь. Я не могу понять, как заставить класс помощника работать.

Выдержки из кода ниже показывают мой рабочий JRadioButton в полностью работающем Java-классе «ClickForStar», а затем то, что я пытался переместить JRadioButton во вспомогательный класс «JRadioButtonSizeSelectClass»

См. Код ниже

//Working JRadioButton code from "ClickForStar" GraphicsProgram
    public void addJButtonsizeGroup(){
        /* Create JRadioButtons to select star size */
        smallButton = new JRadioButton("Small");    //   1. Create JRadioButton for each option stored in instance var.
        mediumButton = new JRadioButton("Medium");  //   1. ""
        largeButton = new JRadioButton("Large");    //   1. ""
        ButtonGroup sizeGroup = new ButtonGroup();  //   2. Create new ButtonGroup which is initially empty. 
        sizeGroup.add(smallButton);                 //   3. Add buttons to the ButtonGroup using add method
        sizeGroup.add(mediumButton);                //   3. ""
        sizeGroup.add(largeButton);                 //   3. ""
        mediumButton.setSelected(true);             //   4. Call setSelected to initially select desired button
        add(smallButton, SOUTH);                    //   5. Add each radio button to the interface
        add(mediumButton, SOUTH);                   //   5. ""
        add(largeButton, SOUTH);                    //   5. ""      
    }

// My attempt to move JRadioButton to a helper class that doesn't work:

public class JRadioButtonSizeSelectClass extends JRadioButton{

    /**
     * [I couldn't get this class to work.] Creates JRadioButton "small, medium, and large", with instance variables 
     * SizeGroup (type ButtonGroup that contains the three buttons), 
     * and smallButton, mediumButton, and largeButton (Type JRadioButton)
     */
    public JRadioButtonSizeSelectClass(){
        /* Create JRadioButtons to select star size */
        smallButton = new JRadioButton("Small");    //   1. Create JRadioButton for each option stored in instance var.
        mediumButton = new JRadioButton("Medium");  //   1. ""
        largeButton = new JRadioButton("Large");    //   1. ""
        ButtonGroup sizeGroup = new ButtonGroup();  //   2. Create new ButtonGroup which is initially empty. 
        sizeGroup.add(smallButton);                 //   3. Add buttons to the ButtonGroup using add method
        sizeGroup.add(mediumButton);                //   3. ""
        sizeGroup.add(largeButton);                 //   3. ""
        mediumButton.setSelected(true);             //   4. Call setSelected to initially select desired button
        add(smallButton, SOUTH);                    //   5. Add each radio button to the interface
        add(mediumButton, SOUTH);                   //   5. ""
        add(largeButton, SOUTH);                    //   5. ""      

    }

    /* Instance variables */
    private JRadioButton smallButton; //Instance variable for JRadioButton
    private JRadioButton mediumButton; //Instance variable for JRadioButton
    private JRadioButton largeButton; //Instance variable for JRadioButton

}

Я пытался вызвать свой вспомогательный класс "JRadioButtonSizeSelectClass" с помощью add (JRadioButtonSizeSelectClass (); но программа вылетает.

...