使用JButtons清除JTextFields

时间:2016-04-14 15:45:10

标签: java arrays methods

我已将JButton cl指定为clear, 但是在我的程序中,使用setText("") ...每个文本字段都不JTextField 我不确定它是不是因为我使用了一个数组用于import javax.swing.*; import java.awt.*; import java.awt.event.*; public class EmployeesApplet extends JApplet implements ActionListener { public JButton sd = new JButton ("Salaried"); public JButton hr = new JButton ("Hourly"); public JButton cm = new JButton ("Commissioned"); public JButton cl = new JButton ("Clear"); private final int FIELDS = 8, FIELD_WIDTH = 20; private String[] strings = new String[FIELDS]; private TextFieldWithLabel[] tf = new TextFieldWithLabel[FIELDS]; private JTextArea ta = new JTextArea(5,25); // Add arrays for readFields() method public void init() { String[] s = {"First Name", "Last Name", "Employee ID", "(a) Salaried: Weekly Salary", "(b1) Hourly 1: Rate Per Hour", "(b2) Hourly 2: Hours Worked" , "(c1) Commissioned: Rate", "(c2) Commissioned: Gross Sales" }; //---------------------- // Set up the Structure //---------------------- Container c = getContentPane(); JPanel f = new JPanel(new FlowLayout()); JPanel b = new JPanel(new BorderLayout(2,0)); JPanel glb = new JPanel(new GridLayout(8,1,0,2)); JPanel gtf = new JPanel(new GridLayout(8,1,0,2)); JPanel flb = new JPanel(new FlowLayout()); // Add FlowLayout to the container c.add(f); // Add BorderLayout to the FlowLayout f.add(b); //--------------------------------------- //Add JPanels to the BorderLayout regions //--------------------------------------- // Add JLables to GridLayout in West b.add(glb, BorderLayout.WEST); for (int i = 0; i < tf.length; i++) { tf[i] = new TextFieldWithLabel(s[i], FIELD_WIDTH); glb.add(tf[i].getLabel()); } // Add JTextFeilds to GridLayout in East b.add(gtf, BorderLayout.EAST); for (int i = 0; i < tf.length; i++) { tf[i] = new TextFieldWithLabel(s[i], FIELD_WIDTH); tf[i].getTextField(); gtf.add(tf[i].getTextField()); } // Add JButtons to FlowLayout in South b.add(flb, BorderLayout.SOUTH); flb.add(sd); flb.add(hr); flb.add(cm); flb.add(cl); sd.addActionListener(this); hr.addActionListener(this); cm.addActionListener(this); cl.addActionListener(this); // Add JTextArea and make it not editable f.add(ta); ta.setEditable(false); } //--------------------------------------- // Read all the JTextFields and // save the contents in a parallel array //--------------------------------------- private void readFields() { for (int i = 0; i < tf.length; i++) // or FIELDS strings[i] = tf[i].getText(); } //--------------------------------------------------------------------------- // Returns true if required JTextFields for selected employee are not empty // Checks required JTextFields in top down order, // displays error in stats are for first req that is empty and places focus //---------------------------------------------------------------------------- private boolean fieldsExist(int i, int i2) { for (int index = 0; index < tf.length; index++) { } showStatus("field is empty"); // Diplays error message in status area tf[i].requestFocus(); // places focus in JTextField return true; } //----------------------------------------------------------------------------------------- // Returns true if all non-required JTextFields for the seleceted employee are empty // Checks non-required JTextFields in top-down order , // displays error message in first non-req JTextField that is not empty and places focus //----------------------------------------------------------------------------------------- private boolean fieldsEmpty(int i, int i2) { showStatus("field should be empty"); // Diplays error message in status area tf[i].requestFocus(); // Places focus in JTextField return true; } public void actionPerformed(ActionEvent e) { if (e.getSource() == cl) { for (int i = 0; i < tf.length; i++) { tf[i].setText(""); tf[1].requestFocus(); } } // End clear if } } 或什么......

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.text.DecimalFormat;

public class TextFieldWithLabel  extends JTextField
{
  private JTextField text_field;
  private JLabel         label;
  private final static int WIDTH = 20;

  public TextFieldWithLabel (String s, int w)
  {
    label      = new JLabel(s);
    text_field = new JTextField(w);
  }

  public JLabel         getLabel()     {return label;}
  public JTextField     getTextField() {return text_field;}
  public String         getText()      {return text_field.getText();}


}  

,这是TextFieldWithLabel类

{{1}}

1 个答案:

答案 0 :(得分:1)

您想要设置text_field的{​​{1}}字段的文字,而不是TextFieldWithLabel的文字。

TextFieldWithLabel

请注意,您可以删除此tf[i].getTextField().setText(""); tf[1].getTextField().requestFocus(); 属性,并直接使用text_field作为TextFieldWithLabel

更好的是,让JTextField 扩展TextFieldWithLabel,因为它没有用,它只是两个组件的容器类。