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, но не понимаю в частности, что передавать в качестве аргументов.
берешь листик и рисуешь линию
Ты создал класс Graphica, наследника JFrame, в нем переопределил метод paint. Но в методе main ты зачем-то создаешь объект класса JFrame и работаешь с ним, через переменную frame. Твой класс Graphica и переопределенный метод в нем, остаются вообще никак не задействованными, соответственно ничего работать не будет.
Тебе нужно было создать экземпляр своего класса, например:
Graphica frame = new Graphica();
и тогда твой класс и переопределенный метод paint в нем были бы задействованы.
Вот простейший пример как нарисовать что-то на фрейме:
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));
}
}