如何从 JTextField 中检索文本?
Posted
技术标签:
【中文标题】如何从 JTextField 中检索文本?【英文标题】:how do I retrive a text, from a JTextField? 【发布时间】:2022-01-13 19:35:06 【问题描述】:这是代码。它创建了一个 GUI。
如果我按下按钮,我需要制作一个可以工作的功能
package View;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.WindowListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import modulo.Test;
public class InterfacciaGrafica extends JFrame implements ActionListener
private static final long serialVersionUID = 1L;
public InterfacciaGrafica(String ArrayClienti[])
this.setTitle("BiKar Prenotazioni");
this.setSize( 300,200);
this.setBackground(Color.black);
this.setForeground(Color.black);
this.setLayout(new BorderLayout());
PannelloIscrizione PannelloIscrizione = new PannelloIscrizione(ArrayClienti);
this.add(PannelloIscrizione,BorderLayout.CENTER);
PannelloIscrizione.setVisible(true);
@Override
public void actionPerformed(ActionEvent e)
// TODO Auto-generated method stub
package View;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import modulo.PatenteTypes;
public class PannelloIscrizione extends JPanel implements ActionListener
private static final AbstractButton ID = null;
Color Arancione = new Color(255, 175, 0);
int eta;
String nome;
String cognome;
String id;
String tipoPatente;
String tipoCliente;
public PannelloIscrizione(String ArrayClienti[])
this.setLayout(new BorderLayout());
this.setBackground(Color.black);
this.setForeground(Color.orange);
Container ContainerCentro = new Container();
ContainerCentro.setSize(200, 100);
JComboBox TipoCliente = new JComboBox(ArrayClienti);
JTextField Nome = new JTextField(20);
JTextField Cognome = new JTextField(20);
JTextArea ID = new JTextArea(id);
JTextField Eta = new JTextField(2);
JComboBox<PatenteTypes> TipoPatente= new JComboBox<PatenteTypes>(PatenteTypes.values());
JButton Iscrizione = new JButton("Iscriviti");
ContainerCentro.setLayout(new BorderLayout());
this.add(ContainerCentro, BorderLayout.CENTER);
ContainerCentro.setBackground(Color.black);
ContainerCentro.setForeground(Color.black);
ContainerCentro.add(ID,BorderLayout.WEST);
ContainerCentro.add(Eta, BorderLayout.EAST);
ContainerCentro.add(TipoPatente,BorderLayout.CENTER);
ID.setBackground(Arancione);
ID.setForeground(Color.black);
Eta.setBackground(Arancione);
Eta.setForeground(Color.black);
TipoPatente.setBackground(Arancione);
TipoPatente.setForeground(Color.black);
Container ContainerNord = new Container();
ContainerNord.setLayout(new BorderLayout());
this.add(ContainerNord, BorderLayout.NORTH);
ContainerNord.setSize(200, 100);
ContainerNord.add(TipoCliente,BorderLayout.WEST);
ContainerNord.add(Nome, BorderLayout.CENTER);
ContainerNord.add(Cognome, BorderLayout.EAST);
ContainerNord.setBackground(Color.black);
ContainerNord.setForeground(Color.black);
TipoCliente.setBackground(Arancione);
TipoCliente.setForeground(Color.black);
Nome.setBackground(Arancione);
Nome.setForeground(Color.black);
Cognome.setBackground(Arancione);
Cognome.setForeground(Color.black);
Container ContainerSud = new Container();
ContainerSud.setLayout(new BorderLayout());
this.add(ContainerSud, BorderLayout.SOUTH);
ContainerSud.setBackground(Color.black);
ContainerSud.setForeground(Color.black);
ContainerSud.add(Iscrizione, BorderLayout.CENTER);
Iscrizione.setBackground(Arancione);
Iscrizione.setForeground(Color.black);
ContainerCentro.setVisible(true);
ContainerNord.setVisible(true);
ContainerSud.setVisible(true);
TipoCliente.setVisible(true);
ID.setVisible(true);
Eta.setVisible(true);
TipoPatente.setVisible(true);
Nome.setVisible(false);
Cognome.setVisible(false);
Iscrizione.setVisible(true);
Iscrizione.addActionListener(this);
public int getEta()
return eta;
public void setEta(int eta)
this.eta = eta;
public String getNome()
return nome;
public void setNome(String nome)
this.nome = nome;
public String getCognome()
return cognome;
public void setCognome(String cognome)
this.cognome = cognome;
public String getId()
return id;
public void setId(String id)
this.id = id;
public String getTipoPatente()
return tipoPatente;
public void setTipoPatente(String tipoPatente)
this.tipoPatente = tipoPatente;
public String getTipoCliente()
return tipoCliente;
public void setTipoCliente(String tipoCliente)
this.tipoCliente = tipoCliente;
@Override
public void actionPerformed(ActionEvent e)
if(e.getSource().equals(Iscrizione))
setId(ID.getText());
System.out.println(ID.getText());
我想从我的 GUI 在 JTextField 中写入一些文本,然后单击按钮后,我希望文本成为我的类的属性 id 的值。但 getText 不起作用
第一个类声明我的框架,里面有一个面板,包含一些文本字段。
【问题讨论】:
由于你没有提供一个 minimal reproducible example 来证明你的问题(或者甚至是一个可以实际编译的代码 sn-p),我不得不猜测ID
是在本地声明的构造函数的上下文,使其无法被actionPerformed
方法访问。如果是这样的话,ID
应该改为实例字段
是的,.getText()
是您从 JTextField 中提取文本的方式。它不起作用表明您的代码中某处存在错误,可能在此代码中:“我省略了代码中所有不太相关的部分,但如有必要我会添加它们。”我>。我建议您显示更多代码,特别是 minimal reproducible example - 请阅读链接以了解确切这是什么以及为什么它可以帮助您和我们。
顺便说一句,你会想学习和使用Java naming conventions。变量名应全部以小写字母开头,而类名应以大写字母开头。学习这一点并遵循这一点将使我们能够更好地理解您的代码,并让您更好地理解其他人的代码。
(1-) 1) 在您的最后一个问题中,还建议变量名称不应以大写字符开头。我见过的每一本教科书或教程都使用了这些约定。我们不应该重复建议。我们的时间可以更好地用于帮助他人。 2)在这个例子中,你使用的是“setSize()”。昨天给你的教程链接包含很多例子。他们都没有使用那个方法。这是布局管理器的工作。通过例子学习,否则你会继续有基本的问题。
【参考方案1】:
if(e.getSource().equals("Iscrizione"))
//setId(ID.getText());
这总是错误的。 e.getSource() 返回一个 Component 并且 Component.equals(String) 将始终为 false;
【讨论】:
以上是关于如何从 JTextField 中检索文本?的主要内容,如果未能解决你的问题,请参考以下文章
如何创建 JTextField 数组并从 String 数组中检索文本?