java - 如何将带有图像的 JButton 放在另一个带有图像的 JButton 之上?

标签 java image swing

所以我尝试将图像相互放置,因为我将这些图像存储在 jbuttons 上,所以我想知道是否有一种方法可以将 jbuttons 放在我已经存在的 jbuttons 上。请提供任何帮助。

编辑: 所以假设我有一个
Jbutton b = new JButton() 我将其设置为图像图标。 然后我还有另一个 JButton x = new JButton() 并将其设置为图像图标。

这些 JButton 包含两个不同的图标。我希望图像彼此重叠。我希望两个图像都显示,底部按钮是较大的图像,顶部的按钮具有较小的尺寸。不确定这是否清楚。

最佳答案

您可以使用OverlayLayout 将组件堆叠在一起。

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

public class SSCCE extends JPanel
{
    public SSCCE()
    {
        setLayout( new OverlayLayout(this) );

        JButton child = new JButton( new ImageIcon("child.jpg") );
        child.setAlignmentX(JButton.CENTER_ALIGNMENT);
        child.setAlignmentY(JButton.CENTER_ALIGNMENT);

        JButton parent = new JButton( new ImageIcon("parent.jpg") );
        parent.setAlignmentX(JButton.CENTER_ALIGNMENT);
        parent.setAlignmentY(JButton.CENTER_ALIGNMENT);

        add(child);
        add(parent);
    }

    @Override
    public boolean isOptimizedDrawingEnabled()
    {
        return false;
    }

    private static void createAndShowGUI()
    {
        JFrame frame = new JFrame("SSCCE");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new SSCCE());
        frame.setLocationByPlatform( true );
        frame.pack();
        frame.setVisible( true );
    }

    public static void main(String[] args)
    {
        EventQueue.invokeLater( () -> createAndShowGUI() );
/*
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndShowGUI();
            }
        });
*/
    }
}

通常绘制代码假设布局管理器以二维布局组件。但在这种情况下,您需要重写 isOptimizedDrawingEnabled() 方法以指示组件已堆叠。这使得绘制效率稍低,但需要确保正确绘制组件。

关于java - 如何将带有图像的 JButton 放在另一个带有图像的 JButton 之上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36533728/

相关文章:

java - 如何在 Jenkins 中创建动态从站

facebook - 如何在 Facebook 中使用动画图片?

java - 使用 Maven FIT 构建失败

java - onActivityResult 在 `finish()` -ing 被调用的 Activity 之后未被调用

html - CSS-无法并排放置图像列表

iphone - 以编程方式选择后,UITableView 中的 UITabBar MoreViewController 图像消失

java - 从另一个类调用另一个 JFrame/JPanel

java - 无法使 GridBagLayout 位置具有重量工作

java - 在处理事件后保持 Java ActionListener 运行?

java - 通过 Activity 开关传递信息