我只是在玩Swing,我正在研究一個非常簡單的Swing組件。我有一個繼承自JComponent
類的組件,它的UI從ComponentUI
繼承。該paint()
方法是這樣的:簡單的自定義Swing JComponent總是平坦的
public void paint(Graphics g, JComponent c) {
int x = c.getX();
int y = c.getY();
c.setBounds(x, y, 100, 25);
int width = c.getWidth();
int height = c.getHeight();
Rectangle r = g.getClipBounds();
g.fillRect(0, 0, 10, 10);
g.drawString("Baf!", 3, 3);
}
但它是完全不可能得到的r.height
另一個值大於1給出的成分是寬度,但高度只有一個百達點。有沒有人經歷過類似的組件?不幸的是,沒有任何簡單的教程。所有的教程都是不可理解的複雜(或過時的)。
看起來,佈局管理器將此組件的總長度調整爲1高度(無論最小值)。
你真的想爲你的組件提供一個UI,或者你只需要重寫'JComponent.paintComponent(Graphics)'?在許多情況下,不會爲特定組件創建UI,因爲這是額外的工作。 – jfpoilpret
這是一個教育性的例子。所以我用這種先進的方式來做。 'c.setBounds(x,y,100,25)'這一行是多餘的。從剪貼板粘貼代碼時,我忘了刪除它。 –