Я пытаюсь привлечь рыбу в любом месте, пользователь вводит, но это будет либо сказатьСоздание нескольких панелей в кадре?
drawFish.java:38: error: cannot find symbol
outer.add(sPanel1);
Или
Exception in thread "main" java.lang.IllegalArgumentException: adding a window to a container
at java.awt.Container.checkNotAWindow(Container.java:483)
at java.awt.Container.addImpl(Container.java:1084)
at java.awt.Container.add(Container.java:410)
at drawFish.main(drawFish.java:38)
Я думал, что мне нужно сделать новую панель для каждой рыбы, но как создать цикл для создания нескольких панелей? Если это даже проблема? Кроме того, я должен использовать метод, который принимает координату x и y, чтобы пользователь мог изменить местоположение рыбы и нарисовать несколько рыб в разных местах. Но это не то, что я делаю. Я попытался сделать метод, включающий вопросы x и y, но затем он говорит, что переменные не являются общедоступными и поэтому не могут использоваться в методе paint. Я был бы благодарен за объяснения всего, потому что я хочу понять все, что я делаю.
public class drawFish extends JPanel {
int x = Integer.parseInt(JOptionPane.showInputDialog(null, "What is the x location of the fish? "));
int y = Integer.parseInt(JOptionPane.showInputDialog(null, "What is the y location of the fish? "));
int w = 200;
int h = 100;
int a = x + 20;
int b = y + 30;
int d = 50;
public drawFish() {
setPreferredSize(
new Dimension(400,400));
}
public void paint(Graphics g) {
g.setColor(Color.GREEN);
g.fillOval(x, y, w, h);
g.fillOval((w-5), y, d, h);
g.setColor(Color.BLACK);
g.fillOval(a, b, 25, 25);
}
public static void main(String[] args) {
MyFrame frame1 = new MyFrame("Drawing Fish");
JPanel outer = new JPanel();
int fn = Integer.parseInt(JOptionPane.showInputDialog(null, "How many fish would you like to draw? "));
for(int i=0; i<fn; i++){
drawFish sPanel1 = new drawFish();
}
outer.add(sPanel1);
frame1.add(outer);
frame1.pack();
frame1.setVisible(true);
}
}