【问题标题】:Margin with a JPanel inside another JPanel与另一个 JPanel 内的 JPanel 保持边距
【发布时间】:2013-05-21 05:36:57
【问题描述】:

我正在使用 JPanel 来模拟正方形。这个想法是在 JPanel 前面放置一种过滤器。

第一个 JPanel 包含一个 ImageIcon 和一个背景颜色。 第二个 JPanel 包含具有透明度的背景颜色,放置在第一个 JPanel 内。

我做到了,但我有一个问题:顶部出现第二个 JPanel 没有覆盖第一个 JPanel 的边距。

编辑:代码 类 JPanelImage 扩展 JPanel

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 方法。

【问题讨论】:

  • 这可能是布局问题或边框问题。向我们展示一个示例,以便我们确定哪个
  • 我现在刚学Java,所以对布局的概念不太了解。因此,这可能是一个边界问题......

标签: java swing jpanel margin layout-manager


【解决方案1】:

我们在 mainJPanel(即框架 contentPane)上有一个 gridBagLayout,我们有一个 JPanelImage(一个上面有图像的 JPanel)到 mainJPanel。当我们尝试向这些 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);

感谢 MadProgrammer 的提示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-25
    • 2021-12-12
    • 2012-03-22
    • 2010-10-19
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多