我正在做一个简单的 Swing 布局(请参阅 image),但出于某种原因,无论我尝试什么,我都无法更改将 UI 的三个部分分开的“边框”的颜色。我错过了什么吗?
布局是使用 GroupLayout 完成的。
编辑:
绿色部分是 GroupLayout 中包含的每个单独的 JPanel。
我已经在任何有意义的对象上尝试了背景色和前景色。我已经尝试将 EmptyBorder 应用于每个 jpanels,但仍然没有成功。我认为这可能与布局有关,但我什至不确定。
这是相关的布局代码。请注意,这都是由 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.createParallelGroup(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)))
);
最佳答案
您应该为容器的内容 Pane 或覆盖它的 JComponent
(例如 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);
}
}
如您所见,两者之间的区域颜色为深蓝色。
关于java - 无法更改布局边框颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6720643/