gpt4 book ai didi

java - 使用 JButtons 清除 JTextFields

转载 作者:行者123 更新时间:2023-12-01 10:03:33 25 4
gpt4 key购买 nike

我已将 JButton cl 指定为清除,但是在我的程序中,并使用 (e.getSource() == cl)...它不会为每个文本字段 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


}


}

这是 TextFieldWithLabel 类

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


}

最佳答案

您想要设置 TextFieldWithLabeltext_field 字段的文本,而不是 TextFieldWithLabel 的文本。

tf[i].getTextField().setText("");
tf[1].getTextField().requestFocus();

请注意,您可以删除此 text_field 属性,并直接使用 TextFieldWithLabel 作为 JTextField

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

关于java - 使用 JButtons 清除 JTextFields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36627958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com