2010-10-07 61 views
0

我想創建一個使用Java AWT或Swing的自定義組件,它將是一個包含其他矩形的多個組件的矩形。像這樣:在Java AWT中創建自定義組件

╔══════╗ 
║ ┌┐ ║ 
║ ├┘ ║ 
║  ║ 
╚══════╝ 

而這需要是一個組件,我可以優先繪製一條指令。像myFrame.add(new MyComponent())

你會說什麼是做到這一點的最好方法?有沒有一種方法可以使用Rectangle來做到這一點,或者我應該使用JPanel還是來自Swing?

回答

1

我會推薦擴展JPanel並覆蓋它的paintComponent()方法。請參閱another answer of mine對此有所幫助。

基本上,當矩形在您的面板上「繪製」時,您需要將其保存爲Jpanel的成員。然後,在paintComponent方法中,您只需繪製您在JPanel中保存的所有矩形。

這是我將如何實現一個 '畫' 的方法:

List<Rectangle> recs; 
List<Stroke> strokes; 
List<Color> colors; 
public void drawRectangle(Rectangle newR, Stroke stroke, Color c){ 
    recs.add(newR); 
    strokes.add(stroke); 
    colors.add(c); 
} 

而且,塗料成分將類似於:

protected void paintComponent(Graphics g){ 
    super.paintComponent(g); 
    for (int i = 0; i < recs.size(); i ++) { 
     g.setColor(colors.get(i)); 
     g.setStroke(strokes.get(i)); 
     g.drawRectangle(recs); 
    } 
} 
2

「多個組件」 - >的JPanel用佈局管理器放置每個組件

「繪製」 - >覆蓋組件上的顏色

檢查Java教程Swing部分。