我不知道标题是否正确,但我想要做的是编写一种方法,例如将颜色的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中有类似的内容。
答案 0 :(得分:1)
假设我们有3个面板,每个面板具有不同的背景颜色,每个面板都有自己的组合框。
你有一个模型:Panel + combo。
我将创建从JPanel
继承的自定义类并创建模型列表。它会使代码更清晰。
public class MyPanel extends JPanel{/* */}
MainClass
List<MyPanel> listOfPanels = new ArrayList<MyPanel>(3);
for(MyPanel model : listOfPanels ){
doStuff(model);
}
private void doStuff(MyPanel model){/**/}
答案 1 :(得分:1)
如果您对使用课程不利,另一种明显的方法是使用工厂类型的方法。
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());
答案 2 :(得分:0)
如果将Panel放入一个数组然后循环遍历数组而不是指定特定的Panel,例如Panel1,Panel2