Note that there are some explanatory texts on larger screens.

plurals
  1. POCreating panels with radio buttons that change text using arrays
    text
    copied!<p>I am currently stumped on how to use arrays to complete an assignment. I've looked through the forums and used google with little luck. I would really appreciate any advice that someone can spare. Thank you very much!:</p> <ol> <li><p>Create the arrays for my 2 sets of radio buttons as well as for the font sizes and for fonts</p></li> <li><p>Remove all references to individual JRadioButtons (style1, style2, ....size1, size2, etc.). Instead, array values must be used. Once you are done modifying all of your code I should only have to change the program in one place to change all aspects of the size. For instance, changing a value in your font array should change the font size option AND the label that displays that font size.</p></li> <li><p>The sizes of your JRadioButton arrays should be directly related to the length of your int and String arrays. So if I have six different sizes to choose from, you should have six JRadioButtons in your array.</p></li> <li><p>Test your code by adding two additional font styles to your styles array.</p></li> <li><p>Test your code by adding two additional sizes to your size array.</p></li> <li><p>You may have to modify your actionPerformed method to match that from the JRadioButtons example in Chapter 5 where you check for a specific event.</p></li> </ol> <p>So in my two arrays that I didn't already initialize, I made them size 7 to allow me to add two more sizes and two more fonts. I am stumped on how to call the index of the array in the actionListener. What would be a good tutorial for working with radio buttons and arrays?</p> <p>Here is my current code:</p> <pre><code>import javax.swing.*; import java.awt.*; import java.awt.event.*; public class StyleArrays extends JPanel implements ActionListener { //declare the labels, panels, variables and radio buttons private JLabel saying; private JRadioButton style1, style2, style3, style4; private JRadioButton size1, size2, size3, size4; private JPanel top, right, left; JRadioButton[] size = new JRadioButton[7]; JRadioButton[] font = new JRadioButton[7]; String[] fonts = {"Arial", "Thonburi", "Rockwell", "Century Gothic"}; int[] sizes = {18, 22, 26, 30}; //declare the variables used later in the code the set the font and style //private String myFont = "Arial"; //private int size = 18; //Constructor //----------------------------------------------------------------- public StyleArrays() { //set the layout of the Layouts panel that will contain all of the other panels setLayout (new BorderLayout()); setBackground (Color.red); //create the new panels that will go inside the Layouts panel top= new JPanel(); right= new JPanel(); left= new JPanel(); saying = new JLabel ("Say it with style!"); // saying.setFont (new Font (myFont, Font.PLAIN, size)); //set the layout and color of the top panel, and add the saying add(top, BorderLayout.NORTH); top.setBackground (Color.yellow); top.add(saying); //create size radio buttons size1 = new JRadioButton ("18", true); size1.setBackground (Color.red); size2 = new JRadioButton ("22"); size2.setBackground (Color.red); size3 = new JRadioButton ("26"); size3.setBackground (Color.red); size4 = new JRadioButton ("30"); size4.setBackground (Color.red); //add listeners for each size buttons size1.addActionListener (this); size2.addActionListener (this); size3.addActionListener (this); size4.addActionListener (this); //add these buttons to this button group ButtonGroup group1 = new ButtonGroup(); group1.add (size1); group1.add (size2); group1.add (size3); group1.add (size4); //set the layout and color of the left panel add(left, BorderLayout.WEST); //add the left panel to the border layout left.setLayout (new BoxLayout (left, BoxLayout.Y_AXIS)); //set the layout of left to box layout left.setBackground (Color.red); //set the color to red //display the buttons on the panel left.add (size1); left.add (size2); left.add (size3); left.add (size4); //This section deals with the panel that contains the STYLE information add(right, BorderLayout.EAST); //add the right panel to the border layout right.setLayout (new GridLayout (2, 2)); //set the layout of right panel to grid layout right.setBackground (Color.red); // set the background color of the panel to red //create style radio buttons style1 = new JRadioButton ("Arial", true); style1.setBackground (Color.red); style2 = new JRadioButton ("Thonburi"); style2.setBackground (Color.red); style3 = new JRadioButton ("Rockwell"); style3.setBackground (Color.red); style4 = new JRadioButton ("Century Gothic"); style4.setBackground (Color.red); //add listeners for each style button style1.addActionListener (this); style2.addActionListener (this); style3.addActionListener (this); style4.addActionListener (this); //add these buttons to this button group ButtonGroup group2 = new ButtonGroup(); group2.add (style1); group2.add (style2); group2.add (style3); group2.add (style4); //display the buttons on the panel right.add (style1); right.add (style2); right.add (style3); right.add (style4); } //***************************************************************** // Represents the listener for both check boxes. //***************************************************************** //***************************************************************** // Represents the listener for the radio buttons. //***************************************************************** public void actionPerformed (ActionEvent event) { Object source = event.getSource(); if (source == size1) //if the event is that the size1 button is selected size = 18; //assign 18 to the variable if (source == size2) size = 22; if (source == size3) size = 26; if (source == size4) size = 30; if (source == style1) myFont = "Arial"; if (source == style2) myFont = "Thonburi"; if (source == style3) myFont = "Rockwell"; if (source == style4) myFont = "Century Gothic"; saying.setFont (new Font (myFont, Font.PLAIN, size)); //display the saying with the current value of 'myFont' and 'style' } public static void main (String[] args) { JFrame frame = new JFrame ("Style Arrays"); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); StyleArrays panel = new StyleArrays(); frame.getContentPane().add (panel); frame.pack(); frame.setVisible(true); } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload