Java 在另一个JPanel中包含JPanel的保证金
我正在使用JPanel模拟正方形。其想法是在JPanel前放置一种过滤器 第一个JPanel包含一个ImageIcon和一个背景色。 包含透明背景色的第二个JPanel放在第一个JPanel内 我做到了,但我有一个问题:第二个JPanel没有覆盖第一个JPanel的顶部出现了边距 编辑:代码 类JPanelImage扩展了JPanelJava 在另一个JPanel中包含JPanel的保证金,java,swing,jpanel,margin,layout-manager,Java,Swing,Jpanel,Margin,Layout Manager,我正在使用JPanel模拟正方形。其想法是在JPanel前放置一种过滤器 第一个JPanel包含一个ImageIcon和一个背景色。 包含透明背景色的第二个JPanel放在第一个JPanel内 我做到了,但我有一个问题:第二个JPanel没有覆盖第一个JPanel的顶部出现了边距 编辑:代码 类JPanelImage扩展了JPanel private ImageIcon imageIcon = null; public void paintComponent(Graphics g) {
private ImageIcon imageIcon = null;
public void paintComponent(Graphics g)
{
if(imageIcon != null)
{
Image image = imageIcon.getImage();
int height = 30;
int width = 18;
int marginLeft = (this.getWidth()-width) / 2;
int marginTop = (this.getHeight()-height) / 2;
super.paintComponent(g);
g.drawImage(image, marginLeft, marginTop, width, height, this);
}
else
super.paintComponent(g);
}
public void addColoredLayout(Color color) {
JPanelImage upperLayout = new JPanelImage();
upperLayout.setOpaque(true);
upperLayout.setBackground(color);
upperLayout.setPreferredSize(this.getPreferredSize());
this.add(upperLayout);
}
我还有一个Window类(扩展JFrame),可以创建一个JPanel并应用addColoredLayout方法。我们在mainJPanel上有一个gridBagLayout(框架内容窗格),我们在mainJPanel上有一个JPanelImage(一个带有图像的JPanel)。当我们试图向这些JPanelImage添加一个JPanel时,我们遇到了他告诉你的问题
mainJPanel.setLayout(gridBagLayout);
gridBagLayout.preferredLayoutSize(this.getContentPane()); // this.getContentPane() = mainJPanel
(...)
GridBagConstraints gridBagConstraints;
(...)
gridBagConstraints.gridy = i;
gridBagConstraints.gridx = j;
(...)
gridBagConstraints.insets = new Insets(0, 0, marginBot, marginRight);
gridBagConstraints.ipadx = 0;
gridBagConstraints.ipady = 0;
(...)
mainJPanel.add(tmpJPanelImage, gridBagConstraints);
编辑:我刚刚找到了解决方案:
((FlowLayout) this.getLayout()).setVgap(0);
谢谢您的提示。这可能是布局问题或边界问题。给我们展示一个例子,这样我们就可以确定我现在正在学习Java,所以我真的不知道布局的概念。因此,这可能是一个边界问题。。。