/ / Java JTextArea no se muestra en la GUI - java, swing, interfaz de usuario, jtextarea

Java JTextArea no se muestra en la GUI - java, swing, interfaz de usuario, jtextarea

Estoy tratando de crear una interfaz gráfica de usuario simple para un swingAplicación Java que estoy escribiendo, pero tengo problemas para que las cosas se muestren en el JPanel, y me preguntaba si alguien podría señalar lo que estoy haciendo mal.

Tengo el siguiente código en mi clase Gui.java:

package openDIS;

import javax.swing.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Gui extends JFrame{

public Gui(){
setTitle("DIS Filter");
setSize(1000, 500);
setLocation (10, 10);
setDefaultCloseOperation(EXIT_ON_CLOSE);

initGui();
}

/*public quitButton(){
initGui();
} */

private void initGui(){
//JFrame frame = new JFrame();
JPanel panel = new JPanel();

this.getContentPane().add(panel);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("DIS Filter");
this.setSize(1000, 500);

panel.setLayout(null);
/*Add a JTextArea to display the output DIS information */
JTextArea displayOutput = new JTextArea();
panel.add(displayOutput);

//String data = EspduReceiver.espdu;
int n = EspduReceiver.entitySite.size();
for (int i = 0; i < n; i++){
EspduReceiver.receivePdu();
System.out.println(EspduReceiver.entitySite.get(i));
System.out.println(EspduReceiver.entityApplication.get(i));
System.out.println(EspduReceiver.entity.get(i));
displayOutput.append(EspduReceiver.entitySite.get(i).toString());
displayOutput.append(EspduReceiver.entityApplication.get(i).toString());
displayOutput.append(EspduReceiver.entity.get(i).toString());
}





JButton quitButton = new JButton("Quit");
panel.add(quitButton);
quitButton.setBounds(875, 400, 80, 30); /*Set the location of the button in the window, and its size */

quitButton.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});


panel.add(quitButton);
//setTitle("Quit");
//setSize(60,30); /*This line was overwriting the previously set values for the size of the window */
setLocationRelativeTo(null);
panel.repaint();
setDefaultCloseOperation(EXIT_ON_CLOSE);
}

public static void main(String[] args){ /* I probably don"t need a main method here- I have one in EspduReceiver.java */
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run(){
Gui gui = new Gui();
gui.setVisible(true);
}
});
}




}

Actualmente, cuando ejecuto la clase, se abre una ventana que se titula "Filtro DIS" y tiene un botón "Salir" en la esquina inferior derecha: el botón Salir funciona correctamente.

Sin embargo, no importa lo que intente, parece que no puedo hacer que JTextArea muestre ... ¿alguien puede señalar lo que estoy haciendo mal aquí?

¡Gracias!

Respuestas

3 para la respuesta № 1

No uses un null diseño; dar al área de texto un tamaño preferido, y pack() el cercado Window.

JTextArea displayOutput = new JTextArea(3, 16);

4 para la respuesta № 2

Todavía necesita un diseño, use FlowLayout como el más simple. También debe establecer el tamaño de JTextArea.

panel.setLayout(new FlowLayout());

/* Add a JTextArea to display the output DIS information */
JTextArea displayOutput = new JTextArea(50, 50);
panel.add(displayOutput);

0 para la respuesta № 3

prueba esto:

displayOutput.setRows(20);
displayOutput.setColumns(5);
displayOutput.setVisible(true);