Некоторое время я пытался изменить текст метки на переменную при нажатии кнопки, но не могу получить доступ к классу. Когда кнопка нажата, он должен изменить текст iscoreTotal на переменные щелчки, и он обновляется каждый раз, но я не могу понять, как получить доступ к классу. Я пытаюсь получить доступ к началу класса, где создается метка, поэтому я могу изменить ее в классе Circle нажатием кнопки
package stackover;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.concurrent.ThreadLocalRandom;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
public class PaintFrame extends JFrame {
// Variables for defining size and position of the circle
public static int iCircleSize() {
return (int) (Math.random() * 100 + 1);
}
public static int iCirclePosX() {
return (int) (Math.random() * 450 + 100);
}
public static int iCirclePosY() {
return (int) (Math.random() * 450 + 100);
}
public static int iclicks = 0;
private static JPanel content = new JPanel();
private PaintPanel paintPanel = new PaintPanel();
public PaintFrame() {
getContentPane().add(content);
content.setLayout(new BorderLayout());
content.add(paintPanel, BorderLayout.CENTER);
}
public static void main(String[] args) {
new PaintFrame();
PaintFrame.start();
}
public static void start() {
int istartPosX = iCirclePosX();
int istartPosY = iCirclePosY();
PaintPanel board = new PaintPanel();
board.add(new Circle(istartPosX, istartPosY, new Dimension(100, 100)));
board.add(new Circle(istartPosX, istartPosY, new Dimension(100, 100)));
board.add(new Circle(istartPosX, istartPosY, new Dimension(100, 100)));
JFrame frame = new JFrame("Oscar's Aim Trainer");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(650, 650);
frame.setContentPane(board);
frame.setVisible(true);
board.setVisible(true);
frame.setLayout(new BorderLayout());
JPanel panel = new JPanel();
JLabel iscoreTotal = new JLabel("0");
panel.add(iscoreTotal);
iscoreTotal.setBounds(50, 350, 100, 35);
iscoreTotal.setBackground(Color.black);
iscoreTotal.setForeground(Color.black);
frame.add(panel);
panel.setLayout(null);
}
}
class PaintPanel extends JPanel {
PaintPanel() {
super(null);
}
}
class Circle extends JComponent {
Circle(int x, int y, Dimension size) {
setBounds(new Rectangle(new Point(x, y), size));
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
move();
System.out.println("Clicked, " + getBounds());
PaintFrame.iclicks++;
System.out.println(+PaintFrame.iclicks);
if (PaintFrame.iclicks == 10) {
System.exit(0);
}
}
});
}
private void move() {
int iSize = PaintFrame.iCircleSize();
int istartPosX = PaintFrame.iCirclePosX();
int istartPosY = PaintFrame.iCirclePosY();
setLocation(new Point(ThreadLocalRandom.current().nextInt(istartPosX),
ThreadLocalRandom.current().nextInt(istartPosY)
));
setSize(iSize + 50, iSize + 50);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
// This code accounts for the shape of the object being placed
int count = 1;
for (int i = 0; i < count; i++) {
g.fillOval(0, 0, getWidth(), getHeight());
}
}
;
}