Почему этот код не работает так, как он должен работать? Не могли бы вы помочь мне исправить это, я новичок в Java, я практически весь день делал некоторые упражнения на Java, и я собираюсь отказатьсяс этим упражнением оно почти готово, но все еще нуждается в некоторых исправлениях, в основном цель программы состоит в том, чтобы, когда пользователь помещает указатель внутри каждой окружности и когда пользователь перемещает колесо мыши, внутренние круги цветов изменяются в размере в соответствии спараметры, которые указаны в основном классе и никогда не могут превышать размер окружности, упражнение немного сложнее, потому что, кроме того, окружности и внутренние круги цветов должны меняться в размере и форме, если размер окнаизменилось.Только второй класс может быть изменен, потому что основной класс уже указан.
Буду признателен, если вы поможете мне, кстати, извините, если я допустил некоторые грамматические ошибки, английский не является моим роднымязык
package Hw03_Balloon;
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.JFrame;
public class BalloonTest extends JFrame {
private Balloon ct_red, ct_green, ct_blue;
public BalloonTest() {
setTitle("Balloon Test");
setSize(450, 250);
setupWidgets();
setupEvents();
setVisible(true);
}
private void setupEvents() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private void setupWidgets() {
ct_red =new Balloon(100, 0, 100, Color.RED, 1);
ct_green =new Balloon(20, 0, 100, Color.BLUE, 5);
ct_blue =new Balloon(20, 0, 100, Color.ORANGE, 10);
setLayout(new GridLayout(1,3));
add(ct_red);
add(ct_green);
add(ct_blue);
}
public static void main(String[] args) {
new BalloonTest();
}
}
И это второй класс, который я использовал
package Hw03_Balloon;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import javax.swing.JComponent;
public class Balloon extends JComponent{
private int value;
private int min;
private int max;
private Color col;
private int speed;
public int r1;
public Balloon(int value, int min, int max, Color col, int speed) {
this.value=value;
this.min=min;
this.max=max;
this.col=col;
this.speed=speed;
}
public void paint(Graphics g) {
int w =getWidth();
int h =getHeight();
int x=w/2;
int y=h/2;
int r1=(int) ((double)value/100*24*w/29);
int r2=(int) ((double) value/100*40*h/71);
System.out.println(r1);
x = x-(r1/2);
y = y-(r2/2);
g.setColor(col);
g.fillOval(x, y, r1, r2);
g.setColor(Color.BLACK);
x=w/2;
y=h/2;
r1=24*w/29;
r2=40*h/71;
x = x-(r1/2);
y = y-(r2/2);
g.drawOval(x, y, r1, r2);
this.r1=r1;
setupEvents();
}
private void setupEvents() {
addMouseWheelListener(new MouseWheelListener() {
public void mouseWheelMoved(MouseWheelEvent ev) {
if(value+ev.getWheelRotation()>=0 && value+ev.getWheelRotation()<=r1) {
value -= speed*ev.getWheelRotation();
if (value<=0) value=0+1;
if (value>=r1) value=r1-1;
repaint();
}
}
});
}
}