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