Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.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 - Fatal编程技术网

&引用;“动态”;Java代码

&引用;“动态”;Java代码,java,Java,我不知道标题是否正确,但我想做的是编写一个方法,例如将颜色的rgb添加到组合框中。假设我们有3个面板,每个面板都有不同的背景颜色,每个面板都有自己的组合框 int p1RGB = (Panel1.getBackground()).getRGB(); int p1Red = (p1RGB>>16)&0xFF; int p1Green = (p1RGB>>8)&0xFF; int p1Blue = p1RGB&0xFF;

我不知道标题是否正确,但我想做的是编写一个方法,例如将颜色的rgb添加到组合框中。假设我们有3个面板,每个面板都有不同的背景颜色,每个面板都有自己的组合框

int p1RGB = (Panel1.getBackground()).getRGB();
    int p1Red = (p1RGB>>16)&0xFF;
    int p1Green = (p1RGB>>8)&0xFF;
    int p1Blue = p1RGB&0xFF;
    String p1RGBStr = String.valueOf(p1Red) +", "+String.valueOf(p1Green) +", "+ String.valueOf(p1Blue); 
    String[] c1Items = { hex1, p1RGBStr };
    DefaultComboBoxModel model1 = new DefaultComboBoxModel (c1Items);
    Combo1.setModel(model1);

不是为每个面板再次编写此代码,而是以一种它为每个面板循环自身的方式编写此代码吗?我认为javascript中也有类似的东西。

如果您将面板放入一个数组中,然后在数组中循环,而不是指定特定的面板,例如Panel1、Panel2

假设我们有3个面板,每个面板都有不同的背景颜色,每个面板都有自己的组合框

你有一个模型:面板+组合

我将创建从
JPanel
继承的自定义类,并创建模型列表。这将使代码更清晰

public class MyPanel extends JPanel{/* */}
主类

listOfPanels=newarraylist(3);
对于(MyPanel型号:listOfPanels){
doStuff(模型);
} 
私有void doStuff(MyPanel模型){/**/}

如果您不赞成使用类,另一个明显的方法是使用工厂类型方法

JComboBox createComboBoxFor(int rgb) {
    return new JComboBox(new DefaultComboBoxModel(new String[] {
        Integer.toString(rgb, 16), // not sure what hex1 is
        (rgb >>> 16 & 0xFF) + ", " + (rgb >>> 8 & 0xFF) + ", " + (rgb & 0xFF)
    }));
}
那你呢

JComboBox panel1Box = createComboBoxFor(panel1.getBackground().getRGB());

这是个好主意,我要用它!但我很好奇是否还有其他更合适的方法来做到这一点!我想不出来,如果你想串接字符串来得到你想要的变量,比如“Panel”+num,没有什么能像你在JS中找到的那样。如果有,这将是相当痛苦的相比,只是使用一个数组你为你的回应,但我不允许使用我的项目列表!所以就像我贴的,创建3个类,不管怎样,它都很容易处理和使用maintain@neto3这样做不需要列表,Maxim的观点是,如果有3个几乎相同的项,那么为它们创建一个类是最方便的方法。
JComboBox panel1Box = createComboBoxFor(panel1.getBackground().getRGB());