我试图制作一个将JTextField
上的文字打印成标签的Java Gui。
因此,在运行时我会在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();
}
}
答案 0 :(得分:4)
将JLabel welcomeLbl = new JLabel("");
替换为:
welcomeLbl = new JLabel("");
您的public static JLabel welcomeLbl;
仍为null
,因为您没有对其进行初始化但确实创建了新的本地变量
答案 1 :(得分:0)
感谢Maxim。我替换你说的代码,现在它可以工作。 我也删除了这个:
"私有类stampa实现ActionListener"
我改变了这个类的创建:
"公共类MastermindGui1扩展JFrame实现ActionListener"。