gpt4 book ai didi

java - JButton 定位问题

转载 作者:行者123 更新时间:2023-12-04 15:53:00 26 4
gpt4 key购买 nike

好的,我有一个 Jpanel,在下图中使用覆盖布局显示为白色。它包含一个 ScrollPane,其中包含一个图像(“无可用图像”)和一个 JButton(“评论”)。

enter image description here

我想将此按钮放置在 JPanel 的右下角。我尝试了多种布局方法,但似乎无法正常工作。按钮最多向东南方向移动大约 3/4,我不知道为什么。

非常感谢任何帮助..

最佳答案

您提到使用 OverlayLayout;您是否希望按钮实际与图像重叠?

如果这对您不重要,请使用其他好的建议之一,因为它们要简单得多。但是,如果您真的希望按钮与图像重叠,这里有一个解决方案:使用 JLayeredPane 将两个 JPanel 分层,后者依次布置按钮和图像。不幸的是,JLayeredPane 没有布局管理器,所以有必要添加一个组件监听器来调整 JPanel 的大小,只要 JLayeredPane 是调整大小。

这是一个 SSCCE:

public class SSCCE {

public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = frame.getContentPane();
contentPane.setLayout(new BorderLayout());

final JLayeredPane layeredPane = new JLayeredPane();
contentPane.add(layeredPane,BorderLayout.CENTER);

final JPanel btnPane = new JPanel(new GridBagLayout());
btnPane.setOpaque(false);

JButton btn = new JButton("Comment");
GridBagConstraints gbc = new GridBagConstraints();
gbc.weightx = 1.0;
gbc.weighty = 1.0;
gbc.anchor = GridBagConstraints.SOUTHEAST;
btnPane.add(btn,gbc);

final JPanel lblPane = new JPanel(new GridBagLayout());
lblPane.setBackground(Color.CYAN);

JLabel lbl = new JLabel("No Image Available");
gbc = new GridBagConstraints();
gbc.weightx = 1.0;
gbc.weighty = 1.0;
gbc.anchor = GridBagConstraints.CENTER;
lblPane.add(lbl,gbc);

layeredPane.add(btnPane,0);
layeredPane.add(lblPane,1);
layeredPane.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
lblPane.setBounds(0, 0, layeredPane.getWidth(), layeredPane.getHeight());
btnPane.setBounds(0, 0, layeredPane.getWidth(), layeredPane.getHeight());
}
});


frame.setSize(300,200);
frame.setVisible(true);
}

}

关于java - JButton 定位问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10741506/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com