所以我尝试将图像相互放置,因为我将这些图像存储在 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/