Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在一个框架中创建多个面板?_Java_User Interface_Methods_Panel - Fatal编程技术网

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);
                }