我已經這個簡單的JPanel子類:子類JPanel並得到他的大小
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class SearchTextField extends JPanel
{
private ImageIcon image;
private JTextField textField;
SearchTextField()
{
this.setLayout(new FlowLayout());
image = new ImageIcon ("img/search.png");
textField = new JTextField ("test");
JLabel label = new JLabel(image);
this.add(label,FlowLayout.LEFT);
this.add(textField, FlowLayout.CENTER);
this.setPreferredSize(new Dimension (250,50));
textField.setPreferredSize(new Dimension (this.getWidth() - 50, this.getHeight()));
}
}
的問題是this.getWidth()
方法無論在JPanel並JTextArea中返回0。看來,該組件尚未初始化。你有解決它的任何想法嗎?謝謝!
[我應避免使用一套(首選|最大|最小)中的Java Swing大小的方法] (http://stackoverflow.com/q/7229226/230513)? – trashgod
[JTextField(String text,int columns)](http://docs.oracle.com/javase/7/docs/api/javax/swing/JTextField.html#JTextField%28java.lang.String,%20int%29 )和'JPanel'已經在'API'中將'FlowLayout'作爲默認的'LayotManager'實現了。 – mKorbel