我正在尝试编写一个未修饰的 JFrame。我正在尝试将按钮放在背景标签上。然而,设置按钮的 Z 顺序会导致按钮拉伸(stretch)到 jframe 的大小,并且 setBounds() 和 setSize() 都不会改变这种情况。这是我的代码:
import javax.swing.*;
public class MyApp {
public static void main(String[] args) {
JFrame mainFrame = new JFrame();
mainFrame.setBounds(0, 112, 100, 50);
mainFrame.setLayout(null);
mainFrame.setUndecorated(true);
JLabel lblBackground = new JLabel(new ImageIcon(JFrame.class.getResource("/res/green.png")));
lblBackground.setBounds(0, 0, 100, 50);
JButton btnStart = new JButton("");
btnStart.setBounds(5, 15, 10, 15);
mainFrame.add(lblBackground);
mainFrame.add(btnStart);
mainFrame.setComponentZOrder(btnStart, 0);
mainFrame.setComponentZOrder(btnStart, 1);
mainFrame.setVisible(true);
}
}
感谢您的回复。
最佳答案
为此使用 JLayeredPane。
您需要创建一个新的 JLayeredPane:
JLayeredPane 分层 = new JLayeredPane();
设置您的 JFrame 以将其用作内容 Pane :
mainFrame.setContentPane(分层);
并按以下格式添加您的组件:
layered.add(Component c, int layerNumber);
希望对您有用!
关于java - JFrame setComponentZOrder() 更改对象的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18155687/