Frage

Ich bin derzeit ratlos, wie Arrays zu verwenden, um eine Zuordnung zu vervollständigen. Ich habe durch die Foren geschaut und Google mit etwas Glück verwendet. Ich würde wirklich schätzen einen Rat, dass jemand ersparen können. Vielen Dank!

  1. Erstellen Sie die Arrays für meine 2 Sätze von Radio-Buttons sowie für die Schriftgrößen und für Schriften

  2. Entfernen Sie alle Verweise auf einzelne JRadioButtons (style1, style2, .... size1, size2, etc.). Stattdessen Array-Werte verwendet werden. Sobald Sie alle Ihre Code getan modifizieren sollte ich nur an einem Ort, das Programm zu ändern, um alle Aspekte der Größe zu ändern. Zum Beispiel soll einen Wert in Ihrer Schrift Array Ändern die Option Schriftgröße ändern und das Etikett, dass zeigt, dass Schriftgröße.

  3. Die Größen Ihrer JRadioButton Arrays sollten direkt an die Länge Ihres int und String-Arrays in Beziehung gesetzt werden. Also, wenn ich sechs verschiedene Größen zur Auswahl haben, sollten Sie sechs JRadioButtons im Array haben.

  4. Testen Sie Ihr Code durch Hinzufügen von zwei zusätzlichen Schriftstile Ihre Stile Array.

  5. Testen Sie Ihren Code durch Hinzufügen von zwei weiteren Größen Ihrer Größe Array.

  6. Sie können Ihre actionPerformed Methode ändern müssen, dass in Kapitel 5 von dem JRadioButtons Beispiel, an dem Sie für ein bestimmtes Ereignis überprüfen.

Also in meinem zwei Arrays, dass ich nicht schon initialize, ich sie Größe 7 gemacht, mir zu erlauben zwei Größen und zwei weitere Schriftarten hinzuzufügen. Ich bin ratlos, wie man den Index des Arrays in der Action nennen. Was ein gutes Tutorial für die Arbeit mit Radiobuttons würde und Arrays?

Hier ist mein aktueller 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);
 }

}
War es hilfreich?

Lösung

Sie können sie von der Schriftart Array wie folgt erstellen:

public class StylePanel extends JPanel implements ActionListener {
 String[] fontArray = {"Arial", "Serif", "Courier", "Consolas"};
 JLabel   label;

 JRadioButton[] fontButtons = new JRadioButton[fontArray.length];
 ButtonGroup    fontGroup = new ButtonGroup();

 public StylePanel() {
  setLayout(new FlowLayout());
  label = new JLabel("Hello");
  add(label);
  for(int i = 0; i < fontButtons.length; i++) {
   fontButtons[i] = new JRadioButton();
   fontButtons[i].setText(fontArray[i]);
   fontButtons[i].addActionListener(this);
   fontGroup.add(fontButtons[i]);
   add(fontButtons[i]);
  }
 }

 @Override
 public void actionPerformed(ActionEvent e) {
  label.setFont(new Font(
    ((JRadioButton)e.getSource()).getText(), Font.PLAIN, 15));
 } 

 public static void main(String[] args) {
  StylePanel panel = new StylePanel();
  JFrame frame = new JFrame();
  frame.getContentPane().add(panel);
  frame.setSize(400, 300);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setVisible(true);
 }
}

Die gleiche Prozedur für die Größe Array, verließ ich es nur, um es kurz zu halten.

Andere Tipps

Für den Anfang, alles, was man mit einem Objekt tun kann, um Sie mit einem Array Wert dieses Objekttypen tun könnten. Also, wenn Sie eine Reihe von JRadio Tasten haben, und RadioButton.addActionListener (this) ist ein Recht Anruf, Array [0] .addActionListener (this) ist ein juristischer Anruf, wie wäre (dies psuedocode ist, nicht Java)

for each index i of Array
   Array[i].addActionListener(this)

Da sieht es aus wie Sie Arrays von Werten wie Größe / Schriftart und durchlaufen sie verwenden könnte Ihre Tasten zu erstellen. Wenn Sie 10 Größen in einem Array haben, könnten Sie tun

for each index i of Sizes
    Array[i] = new JRadioButton(i)

oder etwas in diese Richtung. Ich denke, dass durch Werte, um Iterieren Objekte zu erstellen / ändern wird, was hier angesehen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top