Erstellen von Platten mit Radio-Buttons, dass Textänderung Arrays
-
30-09-2019 - |
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!
-
Erstellen Sie die Arrays für meine 2 Sätze von Radio-Buttons sowie für die Schriftgrößen und für Schriften
-
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.
-
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.
-
Testen Sie Ihr Code durch Hinzufügen von zwei zusätzlichen Schriftstile Ihre Stile Array.
-
Testen Sie Ihren Code durch Hinzufügen von zwei weiteren Größen Ihrer Größe Array.
-
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);
}
}
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.