P
palmis
I have this class that create a JFrame to display some messages.
I don't know why if I call displayFile(String myString) from one class,
it call authomatically the constructor MessageViewer() to initialize
the object into JFrame; while if I call it from another class (in the
same way) It don't call the constructor and so I receive
nullPoiterException about textArea.
I don't know what change.
Can you help me?
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
/*
* Questa classe estende JFrame e costruisce la finestra in cui e'
possibile
* visualizzare i messaggi impacchettati e spediti
*/
public class MessageViewer extends JFrame {
static final long serialVersionUID = 1L;
//Contenitore principale
JFrame frame;
//Area di testo
public static JTextArea textArea;
//Font usato nella textArea
Font textFont;
//Scroll del pannello
JScrollPane scrollPane;
/*
* Questo metodo e' il costruttore della classe ed il responsabile
della
* inizializzazione degli oggetti contenuti nel JFrame.
*/
public MessageViewer() {
//Setta il nome del Frame
super("MessageViewer");
JFrame frame = new JFrame("FrameDemo");
// Definisce cosa fera quando si chiude il frame Frame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
//setta il font
textFont = new Font("Courier", Font.PLAIN, 14);
//Setta alcuni parametri della textArea in cui mostrare i messaggi.
textArea = new JTextArea(20, 35);
textArea.setEnabled(false);
textArea.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 10));
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
textArea.setBackground(Color.white);
textArea.setDisabledTextColor(Color.black);
textArea.setFont(textFont);
//mette la textarea in un pannello scorrevole.
scrollPane = new JScrollPane(textArea);
scrollPane
.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
//Mette JScrollPane e JTextArea nel Jframe
getContentPane().add(scrollPane, BorderLayout.CENTER);
}
/*
* Questo metodo mostra i messaggi nella finestra
*/
public static void displayFile(String myString) {
// Mette i messaggi nella textarea. Concatena "\n" per andare a capo
textArea.append(myString + "\n" + "\n");
//Setta la posizione del cursore alla testa del file
textArea.setCaretPosition(0);
textArea.grabFocus();
} //Fine metodo displayFile()
} //Fine classe Messageviewer
I don't know why if I call displayFile(String myString) from one class,
it call authomatically the constructor MessageViewer() to initialize
the object into JFrame; while if I call it from another class (in the
same way) It don't call the constructor and so I receive
nullPoiterException about textArea.
I don't know what change.
Can you help me?
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
/*
* Questa classe estende JFrame e costruisce la finestra in cui e'
possibile
* visualizzare i messaggi impacchettati e spediti
*/
public class MessageViewer extends JFrame {
static final long serialVersionUID = 1L;
//Contenitore principale
JFrame frame;
//Area di testo
public static JTextArea textArea;
//Font usato nella textArea
Font textFont;
//Scroll del pannello
JScrollPane scrollPane;
/*
* Questo metodo e' il costruttore della classe ed il responsabile
della
* inizializzazione degli oggetti contenuti nel JFrame.
*/
public MessageViewer() {
//Setta il nome del Frame
super("MessageViewer");
JFrame frame = new JFrame("FrameDemo");
// Definisce cosa fera quando si chiude il frame Frame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,500);
//setta il font
textFont = new Font("Courier", Font.PLAIN, 14);
//Setta alcuni parametri della textArea in cui mostrare i messaggi.
textArea = new JTextArea(20, 35);
textArea.setEnabled(false);
textArea.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 10));
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
textArea.setBackground(Color.white);
textArea.setDisabledTextColor(Color.black);
textArea.setFont(textFont);
//mette la textarea in un pannello scorrevole.
scrollPane = new JScrollPane(textArea);
scrollPane
.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
//Mette JScrollPane e JTextArea nel Jframe
getContentPane().add(scrollPane, BorderLayout.CENTER);
}
/*
* Questo metodo mostra i messaggi nella finestra
*/
public static void displayFile(String myString) {
// Mette i messaggi nella textarea. Concatena "\n" per andare a capo
textArea.append(myString + "\n" + "\n");
//Setta la posizione del cursore alla testa del file
textArea.setCaretPosition(0);
textArea.grabFocus();
} //Fine metodo displayFile()
} //Fine classe Messageviewer