2016-03-30 16 views
2

ist ein Screenshot von meiner aktuellen Schnittstelle:Wie fülle ich einen überspannenden Bereich mit einer Hintergrundfarbe in MigLayout? Diese

Screenshot

Meine JLabeltargetJlabel wird durch ein Rechteck von Eigentum enthält spany 2 mit einer roten gepunkteten Grenze (? Ich denke, das Rechteck genannt wird, ein JComponent) und Ich möchte das ganze Rechteck mit einer Farbe füllen. Allerdings kann ich nicht sehen, wie die Hintergrundfarbe auf irgendetwas außer dem JLabel selbst eingestellt wird.

Hier mein SSCCE ist:

package com.sample; 

import java.awt.event.ActionEvent; 
import javax.swing.*; 
import java.awt.event.*; 

public class App 
{ 
    public static void main(String[] args) { 
     App program = new App(); 
     SwingUtilities.invokeLater(program::run); 
    } 

    private void run() { 
     JFrame w = new JFrame(); 
     w.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 

     JPanel d = new JPanel(); 
     d.setLayout(new MigLayout(
       "debug, fill", 
       "[min!][min!][min!][min!][min!]", 
       "[][][grow]")); 

     JLabel targetJlabel = new JLabel("I want this colour to fill up to the dotted red line"); 
     targetJlabel.setBackground(Color.CYAN); 
     targetJlabel.setOpaque(true); 
     d.add(targetJlabel, "spany 2"); 

     d.add(new JTextField("type here"), "growx, spanx 3"); 

     d.add(new JButton("Search"), "spany 2, wrap"); 

     d.add(new JCheckBox("box1")); 
     d.add(new JCheckBox("box2")); 
     d.add(new JCheckBox("box3"), "wrap"); 

     w.add(d); 
     w.pack(); 
     w.setVisible(true); 
    } 
} 

Antwort

2

Diese kleine Änderung der Trick funktioniert :-)

d.add(targetJlabel, "growy, spany 2"); 

enter image description here

+0

Ah, das ist schön, danke! –

+0

@JamieBirch Gern geschehen :-) – RubioRic