从JTextField打印文本

时间:2017-08-03 17:45:56

标签: java eclipse swing nullpointerexception awt

我试图制作一个将JTextField上的文字打印成标签的Java Gui。 因此,在运行时我会在JTextField中写一些内容,然后按下一个按钮,在标签中打印JTextField的内容。

但该计划给了我一个java.lang.NullPointerExceptionActionListener方法有什么问题吗?

你能帮帮我吗?

代码下方:

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

2 个答案:

答案 0 :(得分:4)

JLabel welcomeLbl = new JLabel("");替换为:

welcomeLbl = new JLabel("");

您的public static JLabel welcomeLbl;仍为null,因为您没有对其进行初始化但确实创建了新的本地变量

答案 1 :(得分:0)

感谢Maxim。我替换你说的代码,现在它可以工作。 我也删除了这个:

"私有类stampa实现ActionListener"

我改变了这个类的创建:

"公共类MastermindGui1扩展JFrame实现ActionListener"。