Java 在一个框架中创建多个面板?
我试图在用户进入的任何位置画鱼,但它会说Java 在一个框架中创建多个面板?,java,user-interface,methods,panel,Java,User Interface,Methods,Panel,我试图在用户进入的任何位置画鱼,但它会说 drawFish.java:38: error: cannot find symbol outer.add(sPanel1); 或 我在想,我需要为每条鱼制作一个新的面板,但是如何创建一个循环来创建多个面板呢?如果这就是问题所在?此外,我应该使用一种方法,采用x和y坐标,这样用户可以更改鱼的位置,并在不同的位置绘制一些鱼。但那不是我要做的。我尝试了一个包含x和y的问题的方法,但是它说变量不是公共的,因此不能在paint方法中使用。我希望能为每件
drawFish.java:38: error: cannot find symbol
outer.add(sPanel1);
或
我在想,我需要为每条鱼制作一个新的面板,但是如何创建一个循环来创建多个面板呢?如果这就是问题所在?此外,我应该使用一种方法,采用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);
}
}
公共类drawFish扩展了JPanel{
intx=Integer.parseInt(JOptionPane.showInputDialog(null,“鱼的x位置是什么?”);
int y=Integer.parseInt(JOptionPane.showInputDialog(null,“鱼的y位置是什么?”);
int w=200;
int h=100;
int a=x+20;
int b=y+30;
int d=50;
公共拖网鱼(){
设置首选大小(
新维度(400400));
}
公共空间涂料(图g){
g、 setColor(Color.GREEN);
g、 椭圆形(x,y,w,h);
g、 椭圆形((w-5),y,d,h);
g、 设置颜色(颜色为黑色);
g、 圆形(a、b、25、25);
}
公共静态void main(字符串[]args){
MyFrame frame1=新的MyFrame(“画鱼”);
JPanel outer=新的JPanel();
int fn=Integer.parseInt(JOptionPane.showInputDialog(null,“您想画多少条鱼?”);
对于(int i=0;i
- 不要做很多画,只画一个画
- 创建一个既不是JPanel也不是组件的Fish类,但它有一个
draw(Graphics g)
方法,以便在请求时可以在其当前位置绘制自身
- 给你的JPanel一个
ArrayList
,并用Fish对象填充列表
- 在JPanel的
paintComponent(Graphics g)
方法(而不是paint方法)中,在它包含的每个Fish对象上调用draw(g)
遍历ArrayList
- 确保调用
super.paintComponent(g)
作为绘图JPanel的paintComponent(Graphics g)
方法的第一行,以便删除旧绘图
- 您的for循环逻辑已关闭。如果要在for循环内创建对象,则需要从循环内将它们添加到某个对象中。否则,您所要做的就是创建对象并丢弃它们,永远不要使用它们
- 您需要学习并坚持Java命名约定。类名(如DrawFish)应以大写字母开头,方法和变量应以小写字母开头
- 不要做很多画,只画一个画
- 创建一个既不是JPanel也不是组件的Fish类,但它有一个
draw(Graphics g)
方法,以便在请求时可以在其当前位置绘制自身
- 给你的JPanel一个
ArrayList
,并用Fish对象填充列表
- 在JPanel的
paintComponent(Graphics g)
方法(而不是paint方法)中,在它包含的每个Fish对象上调用draw(g)
遍历ArrayList
- 确保调用
super.paintComponent(g)
作为绘图JPanel的paintComponent(Graphics g)
方法的第一行,以便删除旧绘图
- 您的for循环逻辑已关闭。如果要在for循环内创建对象,则需要从循环内将它们添加到某个对象中。否则,您所要做的就是创建对象并丢弃它们,永远不要使用它们
- 您需要学习并坚持Java命名约定。类名(如DrawFish)应以大写字母开头,方法和变量应以小写字母开头
- 不要做很多画,只画一个画
- 创建一个既不是JPanel也不是组件的Fish类,但它有一个
draw(Graphics g)
方法,以便在请求时可以在其当前位置绘制自身
- 给你的JPanel一个
ArrayList
,并用Fish对象填充列表
- 在JPanel的
paintComponent(Graphics g)
方法(而不是paint方法)中,在它包含的每个Fish对象上调用draw(g)
遍历ArrayList
- 确保调用
super.paintComponent(g)
作为绘图JPanel的paintComponent(Graphics g)
方法的第一行,以便删除旧绘图
- 您的for循环逻辑已关闭。如果要在for循环内创建对象,则需要从循环内将它们添加到某个对象中。否则,您所要做的就是创建对象并丢弃它们,永远不要使用它们
- 您需要学习并坚持Java命名约定。类名(如DrawFish)应以大写字母开头,方法和变量应以小写字母开头
- 不要做很多画,只画一个画
- 创建一个既不是JPanel也不是组件的Fish类,但它有一个
draw(Graphics g)
方法,以便在请求时可以在其当前位置绘制自身
- 给你的JPanel一个
ArrayList
,并用Fish对象填充列表
- 在JPanel的
paintComponent(Graphics g)
方法(而不是paint方法)中,在它包含的每个Fish对象上调用draw(g)
遍历ArrayList
- 确保调用
super.paintComponent(g)
作为绘图JPanel的paintComponent(Graphics g)
方法的第一行,以便删除旧绘图
- 您的for循环逻辑已关闭。如果要在for循环内创建对象,则需要从循环内将它们添加到某个对象中。否则,您所要做的就是创建对象并丢弃它们,永远不要使用它们
- 您需要学习并坚持Java命名约定。
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);
}
}
for(int i=0; i<fn; i++){
drawFish sPanel1 = new drawFish();
}
outer.add(sPanel1);
for(int i=0; i<fn; i++){
drawFish sPanel1 = new drawFish();
outer.add(sPanel1);
}