A intuito ci sei quasi. Devi usare un LayoutManager ma non propriamente in quel modo. Le GUI Java sono fatte a matrioska. Infili componenti dentro a contenitori che a loro volta sono componenti e possono essere infilati in contenitori eccetera eccetera.
Il LayoutManager dice "dove" fa a finire un componente aggiunto ad un contenitore.
Ogni contenitore ha il suo LayoutManager. Per mettere un'immagine sotto ad un altra in una scheda di un JTabbedPane posso prendere un contenitore generico, JPanel, dirgli di usare un LayoutManager che mette una cosa sopra all'altra, aggiungere le due immagini e aggiungere il JPanel come scheda del JTabbedPane.
Ad esempio:
LayoutManager layMan = new GridLayout(2, 1);
JPanel contenitoreImmagini = new JPanel();
contenitoreImmagini.setLayout(layMan);
contenitoreImmagini.add(img2);
contenitoreImmagini.add(img4);
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.addTab("temperature", contenitoreImmagini);
Quanto allo sfondo è più efficace colorare lo sfondo del pannello. Fortunatamente non occorre farlo riga per riga. Per colorare un pannello devi sovrascrivere il suo metodo
protected void paintComponent(Graphics graphics).
Esempio:
se questo è un pannello normale
JPanel panel = new JPanel();
questo è un pannello con lo sfondo sfumato da bianco (in alto) a nero (in basso)
Codice:
JPane panel = new JPanel() {
protected void paintComponent(Graphics graphics) {
super.paintComponent(graphics);
Graphics2D g = (Graphics2D)graphics;
GradientPaint gradient = new GradientPaint(0, 0, Color.WHITE, 0, getHeight() - 1, Color.BLACK);
g.setPaint(gradient);
g.fillRect(0, 0, getWidth(), getHeight());
}
};