Graphics2D используя конструктор - PullRequest
0 голосов
/ 17 ноября 2011

Я хочу нарисовать прямую линию в JFrame, используя Line2D.Double, также я хочу сделать это с помощью конструктора (не через метод).Как я должен объявить переменную g как в примере на docs.oracle.com ?

public void paint (Graphics g) {
Graphics2D g2 = (Graphics2D) g;
...
}

Ответы [ 4 ]

2 голосов
/ 17 ноября 2011

1) I want to draw a straight line in JFrame using Line2D.Double, что невозможно, вы должны поставить туда JLabel , JPanel или простой JComponent, пример здесь

2) если вы хотите paint непосредственно к JFrame, то вы должны (использовать метод paint()) к GlassPane или RootPane

3) для Swing есть метод painComponent (как упоминалось на обоих плакатах), а не paint

2 голосов
/ 17 ноября 2011

Живопись всегда выполняется методом. В частности, пользовательское рисование в Swing выполняется с помощью метода paintComponent () компонента Swing, такого как JComponent или JPanel.

Прочитайте учебник по Swing на Custom Painting для лучшего объяснения и примеров.

1 голос
/ 17 ноября 2011

Рисование / рисование происходит по событию.То есть, когда часть JFrame должна быть (пере) нарисована, paint и будет вызван paintComponent.

Вы можете просто добавить компонент на панель содержимого JFrame в конструкторе.Затем будет нарисована линия путем переопределения paintComponent.

Вы можете создать JPanel, который имеет:

List<Shape> shapes;
shapes.add(new Line2D.Double(...));

, а затем в paintComponent нарисовать все фигуры.Но это перестаралось.

0 голосов
/ 17 ноября 2011

Вы имеете в виду, как получить объект Graphics2D с помощью конструктора? Это не способ сделать это, Graphics2D - это интерфейс, а классы реализации отсутствуют в API. Тем не менее, вы можете получить графический объект из любого компонента с помощью

(Graphics2D)component.getGraphics()
...