我遇到了JTextField的问题。我将输入我的表格名称,姓氏,电话号码和电子邮件。但我不知道怎么做。实际上System.out.print
打印4次null
。方法.getText()
返回未知来源。
这是我的代码:
package View;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import Date.DaneDoKontaktow;
import Date.KolekcjaKontaktow;
import Main.main;
import Model.OperacjeKontakty;
public class DodajKontakt extends JFrame implements ActionListener {
public JButton dodaj;
public JButton anuluj;
public JTextField s_imie;
public JTextField s_nazwisko;
public JTextField s_telefon;
public JTextField s_email;
private OperacjeKontakty operacje = new OperacjeKontakty();
public DodajKontakt(){
super("Dodawanie kontaktu");
setSize(300,300);
setLocationRelativeTo(null);
setLayout(null);
setResizable(false);
setVisible(true);
dodaj = new JButton("Dodaj");
dodaj.setBounds(50, 220, 100, 30);
add(dodaj);
anuluj = new JButton("Anuluj");
anuluj.setBounds(165, 220, 100, 30);
add(anuluj);
DaneDoKontaktow dane = new DaneDoKontaktow();
JLabel imie = new JLabel(dane.imie);
imie.setBounds(15,30,70,15);
add(imie);
JLabel nazwisko = new JLabel(dane.nazwisko);
nazwisko.setBounds(15,60,70,20);
add(nazwisko);
JLabel telefon = new JLabel(dane.telefon);
telefon.setBounds(15,90,70,20);
add(telefon);
JLabel email = new JLabel(dane.email);
email.setBounds(15,120,70,20);
add(email);
anuluj.addActionListener(this);
anuluj.setActionCommand("klik_anuluj");
JTextField s_imie = new JTextField();
s_imie.setBounds(100,20,150,30);
add(s_imie);
JTextField s_nazwisko = new JTextField();
s_nazwisko.setBounds(100,52,150,30);
add(s_nazwisko);
JTextField s_telefon = new JTextField();
s_telefon.setBounds(100,85,150,30);
add(s_telefon);
JTextField s_email = new JTextField();
s_email.setBounds(100,117,150,30);
add(s_email);
dodaj.addActionListener(this);
dodaj.setActionCommand("dodaj");
}
public void actionPerformed(ActionEvent e) {
if( e.getActionCommand().equals("klik_anuluj")){
this.dispose();
}
if (e.getActionCommand().equals("dodaj")){
System.out.print(s_imie);
System.out.print(s_nazwisko);
System.out.print(s_telefon);
System.out.print(s_email);
//operacje.dodaj(s_imie.getText(), s_nazwisko.getText(), s_email.getText(), s_telefon.getText());
this.dispose();
}
}
}
答案 0 :(得分:1)
您正在构造函数中重新声明您的实例变量。当你这样做
JTextField s_imie = new JTextField();
您正在创建一个本地变量,因此实例不会受到影响。
你怎么解决?不要再声明它们,只是初始化:
s_imie = new JTextField();
你应该对其他变量做同样的事情。
答案 1 :(得分:1)
你正在压倒你的Attibutes的可见性
public JTextField s_imie;
public JTextField s_nazwisko;
public JTextField s_telefon;
public JTextField s_email;
而不是:
JTextField s_imie = new JTextField();
s_imie.setBounds(100,20,150,30);
add(s_imie);
使用它初始化声明的变量而不是创建一个新变量:
s_imie = new JTextField();
s_imie.setBounds(100,20,150,30);
add(s_imie);
然后使用以下内容打印出内容:
System.out.print(s_imie.getText());
为所有变量执行此操作。