Я пытаюсь сделать очень простую вещь .. в классе Main я рисую 2 строки для системы координат .. и в классе userPaint рисую 1 строку из x1 y1 x2 y2 (уже инициализировано). Проблема в том, что 3 строки (система координат и строка x1y1x2y2) находятся не в одном окне/кадре. Компилятор создает 2 окна ... как я могу это исправить?Java Draw Lines в одном кадре
Основной класс:
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import java.awt.*;
import javax.swing.*;
public class Main extends JFrame {
@Override
public void paint(Graphics g) {
super.paint(g);
g.drawLine(20, 80, 20, 200);
g.drawLine(20, 200, 140, 200);
}
public Main(String title){
super(title);
setSize(800, 600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
Main main = new Main("Graph");
userPaint up = new userPaint();
}
}
userPaint класс:
import java.awt.*;
import javax.swing.*;
public class userPaint extends JFrame {
int x1, y1, x2, y2;
@Override
public void paint(Graphics g) {
super.paint(g);
g.drawLine(x1, y1, x2, y2);
}
public userPaint(){
//Gives 4 numbers for points to drawline. Assume that the x1,y1,x2,y2 are given by Scanner.. but im gonna initialize
x1 = 200;
y1 = 200;
x2 = 300;
y2 = 300;
setSize(800, 600);
setVisible(true);
}
}
Вы хотите рисовать в одном окне - так используйте одно окно и нарисуйте 2 линии в нем. Вам не нужны 2 класса - один достаточно хорош, и он должен рисовать все строки. Другими словами - объедините эти 2 класса в один, и у вас будет одно окно. – Alex
Да, но я хочу, чтобы 1 строка была исправлена .. (основной класс) и другая строка, заданная пользователем (x1, y1, x2, y2), поэтому, если я делаю в 1 классе, будет: public void paint (Графика g) { super.paint (g); g.drawLine (20, 80, 20, 200); g.drawLine (20, 200, 140, 200); g.drawLine (x1, y1, x2, y2); // Где он берет переменные? } – Sotnam96
У 'JFrame' есть' JPanel', который управляет живописью - покраска должна быть выполнена путем переопределения метода paintComponent – copeg