Đây là Bài đăng đầu tiên của tôi ở đây, vì vậy hãy tha thứ cho tôi nếu tôi làm sai điều gì đó.Các thành phần Java Swing không có Kích thước chính xác khi được thêm vào JPanel
Vấn đề của tôi là:
Tôi cố gắng để thêm các thành phần vào một JPanel với các giá trị được định nghĩa cho Kích thước, vv Nhưng khi tôi thêm chúng vào Panel, họ hoàn toàn không có kích thước và vị trí họ cần phải có . Ví dụ:
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);
}
}
Khi tôi bắt đầu ứng dụng, cả của JTextArea là thực sự nhỏ và đâu đó ở giữa (không như quy định ở trên) trong khi mainPanel được correct.I cố gắng gọi setSize() và phương thức setPreferredSize() ở các Địa điểm khác nhau trong Mã, nhưng nó không hoạt động. Tôi biết nó là tốt hơn để sử dụng một LayoutManager để làm điều này như xa như tôi nghe nhưng phải trung thực, tôi không nhận được làm thế nào để sử dụng nó một cách chính xác. Tôi đã kiểm tra nó trên Oracle Doc nhưng tôi sẽ đánh giá cao nếu ai đó có thể đăng một giải pháp sạch cho điều này, Thanks in Advance.
bạn cần sử dụng đúng 'Bố cục' –
Xin lỗi nếu điều này có vẻ ngu ngốc: Nhưng bạn có nghĩa là setLayout() không? Nếu vậy, tôi nghĩ rằng tôi phải, ví dụ, tạo ra một GridLayout. Nhưng tôi có phải thêm các thành phần để bố trí này hoặc làm thế nào nó hoạt động? –
Xem nguyên tắc của tôi làm câu trả lời. –