Can't change the layout border color
I'm doing a simple Swing layout (see image) but for some reason no matter what I try I cannot change the colors of the 'borders' that split the three sections of the UI. Am I missing something?
The layout is done using GroupLayout.
EDIT:
The green portions are each individual JPanels contained within a GroupLayout.
I have tried background, and foreground colors, on any objects where it would make sense. I have tried applying EmptyBorder to each of the jpanels and still no luck. I think it might have to do with the layout but I'm not even sure about that.
Here is the relevent layout code. Note that this was all auto-generated by Netbeans:
javax.swing.GroupLayout pnlTopLayout = new javax.swing.GroupLayout(pnlTop);
pnlTop.setLayout(pnlTopLayout);
pnlTopLayout.setHorizontalGroup(
pnlTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 532, Short.MAX_VALUE)
);
pnlTopLayout.setVerticalGroup(
pnlTopLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 59, Short.MAX_VALUE)
);
javax.swing.GroupLayout pnlSideLayout = new javax.swing.GroupLayout(pnlSide);
pnlSide.setLayout(pnlSideLayout);
pnlSideLayout.setHorizontalGroup(
pnlSideLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 200, Short.MAX_VALUE)
);
pnlSideLayout.setVerticalGroup(
pnlSideLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 214, Short.MAX_VALUE)
);
javax.swing.GroupLayout pnlMainLayout = new javax.swing.GroupLayout(pnlMain);
pnlMain.setLayout(pnlMainLayout);
pnlMainLayout.setHorizontalGroup(
pnlMainLayout.createParalle开发者_运维问答lGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 326, Short.MAX_VALUE)
);
pnlMainLayout.setVerticalGroup(
pnlMainLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 214, Short.MAX_VALUE)
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(pnlSide, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(pnlMain, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addComponent(pnlTop, javax.swing.GroupLayout.DEFAULT_SIZE, 532, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(pnlTop, javax.swing.GroupLayout.PREFERRED_SIZE, 59, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(pnlMain, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(pnlSide, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
);
You should be setting the background color of either the container's content pane, or the JComponent
that overlays it (e.g. JPanel
).
public final class Demo {
private static BufferedImage bi;
public static void main(String[] args){
try {
loadImage();
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run() {
createAndShowGUI();
}
});
} catch (IOException e) {
// handle exception
}
}
private static void loadImage() throws IOException{
bi = ImageIO.read(Demo.class.getResource("../resources/whitefro1.jpg"));
}
private static void createAndShowGUI(){
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JPanel panel = new JPanel();
panel.setBackground(Color.BLUE.darker()); // here
final JLabel labelOne = new JLabel();
labelOne.setIcon(new ImageIcon(bi));
final JLabel labelTwo = new JLabel();
labelTwo.setIcon(new ImageIcon(bi));
panel.add(labelOne);
panel.add(labelTwo);
frame.add(panel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
As you can see, the area between is colored a darker shade of blue.
精彩评论