Top.Mail.Ru
Ответы

Javaswing, как нарисовать прямую?

Недавно начал изучать javaswing и столкнулся с тем, что упорно не понимаю как нарисовать прямую и в принципе пользоваться классом Graphics. Вот код моей попытки нарисовать прямую:

package javaswing;
import java.awt.Dimension;
import javax.swing.*;

import java.awt.Graphics;
class Graphica extends JFrame {
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("Test frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(200, 100));
frame.setLocation(500, 200);

frame.setVisible(true);
frame.pack();
}
@Override
public void paint(Graphics g) {
g.drawLine(0, 0, 100, 100);
}
}

Я уже пытался вызывать метод paint, но не понимаю в частности, что передавать в качестве аргументов.

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Мыслитель
1мес

берешь листик и рисуешь линию

Аватар пользователя
Профи
1мес

Ты создал класс Graphica, наследника JFrame, в нем переопределил метод paint. Но в методе main ты зачем-то создаешь объект класса JFrame и работаешь с ним, через переменную frame. Твой класс Graphica и переопределенный метод в нем, остаются вообще никак не задействованными, соответственно ничего работать не будет.

Тебе нужно было создать экземпляр своего класса, например:

1
 Graphica frame = new Graphica(); 

и тогда твой класс и переопределенный метод paint в нем были бы задействованы.

Вот простейший пример как нарисовать что-то на фрейме:

123456789101112131415161718192021222324
 import javax.swing.*; 
import java.awt.*; 
 
public class DrawSample extends JFrame { 
 
    public DrawSample() { 
        super("Draw Sample"); 
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        setSize(640, 480); 
        setLocationRelativeTo(null); 
    } 
 
    @Override 
    public void paint(Graphics g) { 
        super.paint(g); 
        g.drawLine(100,100, 200, 200); 
        g.drawOval(150,150, 100, 100); 
    } 
 
    public static void main(String[] args) { 
        DrawSample sample = new DrawSample(); 
        EventQueue.invokeLater(() -> sample.setVisible(true)); 
    } 
}