إنشاء لوحات مع أزرار الراديو التي تغير النص باستخدام المصفوفات

StackOverflow https://stackoverflow.com/questions/4137563

سؤال

أنا حاليًا متعثرًا على كيفية استخدام المصفوفات لإكمال المهمة. لقد بحثت من خلال المنتديات واستخدمت Google مع القليل من الحظ. سأقدر حقًا أي نصيحة يمكن لشخص ما أن تجنيبها. شكرا جزيلا لك!:

  1. قم بإنشاء المصفوفات لمجموعتي من أزرار الراديو وكذلك لأحجام الخطوط والخطوط

  2. قم بإزالة جميع الإشارات إلى jradiobuttons الفردية (النمط 1 ، النمط 2 ، .... الحجم 1 ، الحجم 2 ، إلخ). بدلاً من ذلك ، يجب استخدام قيم الصفيف. بمجرد الانتهاء من تعديل كل التعليمات البرمجية الخاصة بك ، يجب أن أضطر فقط إلى تغيير البرنامج في مكان واحد لتغيير جميع جوانب الحجم. على سبيل المثال ، يجب أن يغير تغيير القيمة في صفيف الخط خيار حجم الخط والتسمية التي تعرض حجم الخط.

  3. يجب أن تكون أحجام صفائف jradiobutton الخاصة بك مرتبطة مباشرة بطول صفائف int و string. لذلك إذا كان لدي ستة أحجام مختلفة للاختيار من بينها ، فيجب أن يكون لديك ستة jradiobuttons في صفيفك.

  4. اختبر الكود الخاص بك عن طريق إضافة اثنين من أنماط الخط الإضافية إلى مجموعة الأنماط الخاصة بك.

  5. اختبر الكود الخاص بك عن طريق إضافة أحجام إضافية إلى صفيف الحجام الخاص بك.

  6. قد تضطر إلى تعديل طريقة ActionPerformed لمطابقة ذلك من مثال Jradiobuttons في الفصل 5 حيث يمكنك التحقق من حدث معين.

لذلك في صفيفتي اللذين لم أهيئتهما بالفعل ، جعلتهما حجمهم 7 للسماح لي بإضافة أحجمين أخريين وخطين آخرين. أنا مهتم حول كيفية استدعاء فهرس المصفوفة في ActionListener. ماذا سيكون البرنامج التعليمي الجيد للعمل مع أزرار الراديو والصفائف؟

هنا هو قانون بلدي الحالي:

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

}
هل كانت مفيدة؟

المحلول

يمكنك إنشائها من مجموعة الخط مثل هذا:

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

نفس الإجراء لمجموعة الحجم ، لقد تركته للتو لإبقائه قصيرًا.

نصائح أخرى

بالنسبة للمبتدئين ، أي شيء يمكنك القيام به مع كائن ، يمكنك القيام به بقيمة صفيف لنوع الكائن هذا. لذا ، إذا كان لديك مجموعة من أزرار JRadio ، و RadiObutton.AddActionListener (هذا) هي دعوة قانونية ، صفيف [0].

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

بالنظر إلى ذلك ، يبدو أنه يمكنك استخدام صفائف من القيم مثل نوع الحجم/الخط والتكرار من خلالها لإنشاء أزرارك. إذا كان لديك 10 أحجام في صفيف ، فيمكنك القيام بذلك

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

او هناك شيء ما على طول هذه الخطوط. أعتقد أن التكرار من خلال القيم من أجل إنشاء/تعديل الكائنات هو ما يتم البحث عنه هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top