"动态"Java 代码



我不知道标题是否正确,但我想做的是编写一个方法,例如将颜色的 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中也有类似的东西。

假设我们有 3 个面板,每个面板

都有不同的背景颜色,每个面板都有自己的组合框。

您有一个模型:面板 + 组合。

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

public class MyPanel extends JPanel{/* */}

主类

List<MyPanel> listOfPanels = new ArrayList<MyPanel>(3);
for(MyPanel model : listOfPanels ){
  doStuff(model);
} 
private void doStuff(MyPanel model){/**/}

如果您反对使用类,另一种明显的方法是使用工厂类型方法。

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

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

最新更新