我想找出一種方法來打印到JTextArea而不會引發異常。目前我正在拋出一個NullPointerException,但是當我嘗試打印到JTextArea時。我不確定它出錯的地方或原因。有人請幫助我。謝謝。試圖打印到JTextArea
import java.awt.EventQueue;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.SwingConstants;
import javax.swing.JTextField;
import javax.swing.JScrollBar;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JTextArea;
public class TicketLine {
private JFrame frame;
private JTextArea textArea;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
TicketLine window = new TicketLine();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public TicketLine() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JButton nextButton = new JButton("Next Person");
nextButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Queue<String> queue = new LinkedList<String>();
queue.offer("Megan");
queue.offer("Kate");
queue.offer("Conan");
queue.offer("Jay");
queue.offer("Bert");
queue.offer("Ernie");
queue.offer("Mickey");
queue.offer("Goofy");
queue.offer("Optimus");
queue.offer("Megatron");
Stack<String> ticketList = ticketList();
while(queue.size() > 0)
// System.out.println(queue.remove() + " wins tickets to " + ticketList.pop());
// NullPointerException HAPPENS HERE!
textArea.setText(queue.remove() + "wins tickets to " + ticketList.pop());
}
});
nextButton.setBounds(165, 197, 106, 23);
frame.getContentPane().add(nextButton);
JLabel lblNewLabel = new JLabel("To Display Next Winner Press the Button");
lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
lblNewLabel.setBounds(90, 156, 245, 30);
frame.getContentPane().add(lblNewLabel);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(0, 0, 2, 2);
frame.getContentPane().add(scrollPane);
JTextArea textArea = new JTextArea();
textArea.setBounds(90, 38, 245, 91);
frame.getContentPane().add(textArea);
}
public static Stack<String> ticketList() {
Stack<String> tickets = new Stack<String>();
tickets.push("Olympus Has Fallen");
tickets.push("Jurassic Park");
tickets.push("The Patriot");
tickets.push("Matrix");
tickets.push("Gettysburg");
tickets.push("Gods and Generals");
tickets.push("White House Down");
tickets.add((int) (Math.random() * 5), "Star Wars");
tickets.add((int) (Math.random() * 5), "Star Wars");
tickets.add((int) (Math.random() * 5), "Star Wars");
return tickets;
}
}
在那裏我有我沒有任何問題,當我開關(t)左右,除了它不會在它打印出在Eclipse本身的結果JTextArea中打印的其他方式的行情。
後整個例外(包括完整的調用堆棧) –
解決,這是** **很多比實際的解決方案更重要的過程,因爲你肯定會再次遇到NPE。學習的教訓是仔細觀察投擲NPE的線上使用的變量。其中一個是空的,一旦你發現,回溯你的代碼,找出原因。 –