2010-10-07 3 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 Tutorial Swing.

Смежные вопросы