È il mio primo post qui, quindi perdonami se sto facendo qualcosa di sbagliato.I componenti Java Swing non hanno la dimensione corretta quando vengono aggiunti a JPanel
il mio problema è:
Sto cercando di aggiungere componenti a un JPanel con valori definiti per dimensioni, ecc Ma quando li aggiungere al pannello, che assolutamente non hanno la dimensione e la posizione che dovrebbe avere . Per esempio:
public class Console extends JFrame {
private JPanel mainPanel = new JPanel();
private JTextArea textField = new JTextArea();
private JTextArea textField2 = new JTextArea();
public Console() {
this.setSize(500,300);
this.mainPanel.setSize(this.getWidth(),this.getHeight());
this.textField.setEditable(false);
this.textField.setSize(this.mainPanel.getWidth(), 100);
this.textField.setPreferredSize(new Dimension(this.mainPanel.getWidth(),this.mainPanel.getHeight()));
this.textField.setLocation(0, 0);
this.textField.setText("some text");
this.textField.setVisible(true);
this.textField2.setSize(this.mainPanel.getWidth(),200);
this.textField2.setPreferredSize(new Dimension(this.getWidth(),this.getHeight()));
this.textField2.setLocation(0,this.mainPanel.getHeight()-this.textField.getHeight());
this.textField2.setText("blabla");
this.textField2.setVisible(true);
this.mainPanel.add(textField);
this.mainPanel.add(textField2);
this.mainPanel.setVisible(true);
this.add(this.mainPanel);
// I know you should not call setVisible() in the Constructor, just for making Code more simple here.
this.setVisible(true);
}
}
Quando ho avvia l'applicazione, entrambi JTextArea di sono davvero piccole e da qualche parte nel mezzo (non come indicato sopra), mentre la mainPanel è correct.I provato a chiamare setSize() e setPreferredSize() in diversi Luoghi nel Codice, ma non ha funzionato. So che è meglio usare un LayoutManager per fare tutto ciò che ho sentito, ma ad essere onesti, non capisco come usarlo correttamente. L'ho controllato su Oracle Doc, ma sarei grato se qualcuno potesse pubblicare una soluzione pulita per questo, Grazie in anticipo.
è necessario utilizzare 'Layout' corretto –
Scusa se questo sembra stupido: Ma intendi setLayout()? Se è così, penso di dover, ad esempio, creare un GridLayout. Ma devo aggiungere i componenti a questo layout o come funziona? –
Vedi le mie linee guida come risposta. –