例外をスローせずに JTextArea に出力する方法を見つけようとしています。現在、NullPointerException をスローしていますが、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;
}
}
私が引用符を持っている場合、JTextArea で印刷されないことを除いて、他の方法で t を切り替えても問題はありません。Eclipse 自体で結果を印刷します。