我试图制作一个Java Gui,将JTextField
上的文本打印到标签中。 因此,在运行时,我会在JTextField
中写一些东西,然后我会按下一个按钮,在标签中打印JTextField
的内容。从JTextField打印文本
但该计划给我一个java.lang.NullPointerException
。方法ActionListener
有什么不对吗?
你能帮我吗?
代码如下:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.EventQueue;
import java.util.*;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import java.awt.Rectangle;
import javax.swing.SwingConstants;
import java.awt.event.ActionListener;
import java.util.EventObject;
import java.awt.event.ActionEvent;
public class MastermindGui1 extends JFrame {
public static JTextField insNome;
public static JLabel welcomeLbl;
private JPanel contentPane;
Container contenuto;
public MastermindGui1() {
JFrame finestra = new JFrame("MASTERMIND");
finestra.setResizable(false);
finestra.setBounds(200,200,300,300);
contenuto = finestra.getContentPane();
contenuto.setBackground(Color.YELLOW);
finestra.getContentPane().setLayout(null);
JTextField insNome = new JTextField();
insNome.setBounds(21, 70, 151, 35);
contenuto.add(insNome);
JLabel welcomeLbl = new JLabel("");
welcomeLbl.setVisible(false);
welcomeLbl.setBounds(58, 138, 180, 74);
welcomeLbl.setBackground(Color.ORANGE);
contenuto.add(welcomeLbl);
JLabel lblNewLabel = new JLabel("INSERISCI IL TUO NOME");
lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
lblNewLabel.setBounds(75, 11, 142, 23);
finestra.getContentPane().add(lblNewLabel);
JButton stampa = new JButton("STAMPA");
stampa.addActionListener(new stampa());
stampa.setBounds(195, 76, 89, 23);
contenuto.add(stampa);
stampa.addActionListener(new stampa());
finestra.setVisible(true);
finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private class stampa implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e) {
insNome = (JTextField) e.getSource();
String testo = insNome.getText();
welcomeLbl.setText(testo);
}
}
public static void main(String[] args) {
MastermindGui1 finestra = new MastermindGui1();
}
}
你必须'stampa.addActionListener(new stampa());'lines ...只有一个需要。也不要使用小写的类名... –
也是这行'insNome =(JTextField)e.getSource();'用不正确的值覆盖你的'insNome'变量,因为'getSource()'是按钮,不是textfield ... –
为什么标题中的SHOUTING? – EJoshuaS