Создание пользовательских компонентов в Java AWT - PullRequest
0 голосов
/ 08 октября 2010

Я пытаюсь создать пользовательский компонент, используя Java AWT или Swing, который будет прямоугольником с несколькими компонентами внутри него, включая другие прямоугольники. Примерно так:

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

И это должен быть компонент, который я предпочтительно могу нарисовать одной инструкцией. Что-то вроде myFrame.add(new MyComponent()).

Что бы вы сказали, это лучший способ сделать это? Есть ли способ, которым я могу сделать это, используя Rectangle, или я должен идти с JPanel или что-то из Swing?

Ответы [ 2 ]

2 голосов
/ 08 октября 2010

«количество компонентов» -> JPanel с менеджером по расположению для размещения каждого компонента

«рисование» -> переопределение рисования для компонента

Проверьте раздел Swing Tutorial Java.

1 голос
/ 08 октября 2010

Я бы рекомендовал расширить JPanel и переопределить его paintComponent() метод.См. другой мой ответ для получения дополнительной информации по этому вопросу.

В основном, когда на вашей панели «нарисован» прямоугольник, вы захотите сохранить его как член 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...