一次在Panel中添加多个项目

时间:2016-03-14 00:22:34

标签: java swing jpanel

只是一个简短的:))

我有

        panel8.add(label4).setVisible(true);
        panel8.add(panel4).setVisible(true);
        panel8.add(button1).setVisible(true);
        panel8.add(panel7).setVisible(true);

但我希望有这样的事情:

    panel8.add(label4, panel4, button1, panel7).setVisible(true);

语法是否正确?或者不可能?

提前致谢。

2 个答案:

答案 0 :(得分:2)

您的代码中的一些观察结果:

  1. 您似乎正在访问全局静态变量,这是一个禁忌
  2. 您的变量以大写字母开头,即Java中的非标准
  3. 请不要为多个面板使用数字(panel4panel8,...)。而是根据它们的名称命名它们(例如buttonPaneloutputPanel ...)
  4. 相反,您最好为Panel8容器创建自定义类,例如:

    public class MyPanel extends Panel {
        public MyPanel() {
            //...instantiate label4
            add(label4);
            //...instantiate panel4
            add(panel4);
            //...instantiate button1
            add(button1);
            //...instantiate panel7
            add(panel7);
        }
    }
    

答案 1 :(得分:2)

简短的回答是,不,你不能这样做,这不是API的设计方式。

您可以创建一个可以执行此操作的实用程序方法,可能类似于......

addTo(Panel8, 
    GamulatorMain.Label4, 
    GamulatorMain.Panel4, 
    GamulatorMain.Button1, 
    GamulatorMain.Panel7).setVisible(true);

你可以使用像...这样的东西。

#!/bin/bash

# Retries a command on failure.
# $1 - the max number of attempts
# $2... - the command to run

retry() {
    local -r -i max_attempts="$1"; shift
    local -r cmd="$@"
    local -i attempt_num=1
    until $cmd
    do
        if ((attempt_num==max_attempts))
        then
            echo "Attempt $attempt_num failed and there are no more attempts left!"
            return 1
        else
            echo "Attempt $attempt_num failed! Trying again in $attempt_num seconds..."
            sleep $((attempt_num++))
        fi
    done
}

# example usage:
retry 5 ls -ltr foo

作为例子