Попытка работать с базовым свингом на Java продолжает вызывать у меня проблемы.
Когда JFrame создается во время выполнения, ни один из компонентов не отрисовывается изначально, вам нужно изменить размер окна, чтобы вызывать paint (), очевидно? Есть ли простое исправление, которое мне не хватает?
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class LabTen extends JFrame{
int x, y;
public LabTen(){
this.setSize(200,200);
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.getContentPane().add(new Board()); //do this in the constructor
}
public static void main(String[] args){
LabTen one = new LabTen();
one.repaint();
}
}
//mouseListener has more things when we're going in and out so you should have it too
//write on the component or pannel, not the frame
class Board extends JComponent implements MouseListener, MouseMotionListener{
int mouseX, mouseY;
public Board(){
addMouseListener(this);
addMouseMotionListener(this);
}
public void mouseMoved(MouseEvent e){
this.mouseX = e.getX();
this.mouseY = e.getY();
this.repaint();
}
public void mouseDragged(MouseEvent e){
//do nothing...
}
public void mouseClicked(MouseEvent e){
}
public void mouseEntered(MouseEvent e){
}
public void mouseExited(MouseEvent e){
}
public void mousePressed(MouseEvent e){
}
public void mouseReleased(MouseEvent e){
}
public void paintComponent(Graphics g){
//g.drawString("(" + this.mouseX + ", " + this.mouseY + ")", this.mouseX,this.mouseY);
//this uses the default way
// g.drawLine(this.getWidth()/2, this.getHeight()/2, this.mouseX, this.mouseY);
double distance = Math.sqrt(Math.pow(this.mouseX - this.getWidth()/2, 2) + Math.pow(this.mouseY - this.getHeight()/2, 2));
int centerX = this.getWidth()/2;
int centerY = this.getHeight()/2;
for(int i = 0; i < 20; i++){
double distanceX =
g.drawLine(centerX, centerY, (centerX))
}
}
}