GUIコンポーネントの位置、幅、高さはいつ設定されますか?レイアウトマネージャーを使用している場合、これらのフィールドはどのように影響を受けますか?2つのスライダーを含むパネルがあり、そのうちの1つの横に長方形を描画したいと思います。GUIコンポーネントを初期化し、スライダーの1つの横に長方形でペイントするコードは次のとおりです。
public PhotoSliders()
{
initComponents(); //from the netbeans GUI designer
}
public void setColorRect() //initialize a colored rectangle
{
colorRect = new ColorRect(Color.RED, (double)(emSlider.getX())/getWidth(), (double)(emSlider.getY())/getHeight());
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
colorRect.paintColorRect(g, getWidth(), getHeight());
}
emSlider.getX()、emSlider.getY()、getWidth()、およびgetHeight()は最初はすべて0であることがわかりました。アプレットのサイズを変更して再描画すると、フィールドがゼロではなくなります。なぜ最初はすべてゼロなのですか?これが私のアプレットクラスのコードです:
public void init() //initialize the Applet Class
{
setLayout(new BorderLayout());
slidersPanel = new PhotoSliders();
JPanel north = new JPanel(new BorderLayout());
north.add(slidersPanel, BorderLayout.WEST);
add(north, BorderLayout.NORTH);
add(photoEffect, BorderLayout.CENTER);
slidersPanel.setColorRect();
}
public void paint(Graphics g) //paint the photoEffect
{
super.paint(g);
slidersPanel.setColorRect();
}