2010-03-11 103 views
0

的背景我想設計一個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

回答

0

只需使用不同的背景顏色爲每個彩條自己設置面板。不要忘記使用setOpaque(true)使面板顯式不透明 - 在大多數外觀和感覺中,面板默認透明。

關於美學的註釋;我會從每組陰影中的第一行開始。

3

嘗試使用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

相關問題