的Java Swing - 一个JPanel

问题描述:

的背景我想设计一个JPanel应有的彩色编码图如下图所示:的Java Swing - 一个JPanel

http://local.content.compendiumblog.com/uploads/user/b8bbc9ab-67b1-4a8e-ac5c-5811daa967bd/ec324f27-588d-454b-a857-82d79d6acad6/survey-template.gif

我如何编写一个JPanel的颜色。我认为在主JPanel上添加5个JPanel(对于上面显示的5个块)。将每个JPanel的background设置为light Gray

但是如何才能达到如图所示的深色线。

任何提示或建议?

+0

?这些控件在运行时是静态还是动态添加的? – zapping 2010-03-11 07:08:04

+0

控件是静态的。我不认为面板的布局与面板的颜色编码有关(纠正我,如果我错了)... – 2010-03-11 07:14:52

只需使用不同的背景颜色为每个彩条自己设置面板。不要忘记使用setOpaque(true)使面板显式不透明 - 在大多数外观和感觉中,面板默认透明。

关于美学的注释;我会从每组阴影中的第一行开始。

尝试使用JTable,然后交替排的颜色。通过这种方式,您可以编写通用JComponent(AlternatingColorTable),并在这4个面板中像使用常规JTable一样使用它。

事情是这样的,也许:

public class AlternatingColorTable extends JTable { 

public AlternatingColorTable() { 
    super(); 
} 

public AlternatingColorTable(TableModel tableModel) { 
    super(tableModel); 
} 

/** Extends the renderer to alternate row colors */ 
public Component prepareRenderer(TableCellRenderer renderer, int row, int col) { 
    Component returnComp = super.prepareRenderer(renderer, row, col); 

    Color alternateColor = Color.GRAY; 
    Color mainColor = Color.DARK_GRAY; 

    if (!returnComp.getBackground().equals(getSelectionBackground())) { 
     Color background = (row % 2 == 0 ? alternateColor : mainColor); 
     returnComp.setBackground(background); 
     background = null; 
    } 
    return returnComp; 
} 

}您使用的面板,布局

+0

+1对我来说,背景颜色转换是在TableCellRenderer中完成的,但它是只有一个选择的问题 – Riduidel 2010-03-11 14:34:09

+0

我认为prepareRenderer()方法是完美的地方,因为你只需要在一个地方做到这一点。否则,你需要一个String列和RadioButton列的自定义渲染器。见我的两美分http://tips4java.wordpress.com/2010/01/24/table-row-rendering/。 – camickr 2010-03-11 16:25:16