gpt4 book ai didi

java - JLabel滚动后消失

转载 作者:行者123 更新时间:2023-12-01 17:16:27 25 4
gpt4 key购买 nike

我有一个包含 ImageIcon 的滚动面板。我想添加绝对位置(以像素为单位)的 JLabel 。我有:Swing app image

代码:

public class HelloWorld {


HelloWorld() {

JFrame jfrm = new JFrame("Hello, World!");
jfrm.setSize(640, 480);
JPanel mapPanel = new JPanel();
mapPanel.setLayout(null);
mapPanel.setSize(600,400);
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ImageIcon imageIcon = new ImageIcon("src\\SwingExp\\img\\map.gif");
JScrollPane scrollPane = new JScrollPane(new JLabel(imageIcon));
scrollPane.setBounds(5,5,600,400);
JLabel usaLabel = new JLabel("U.S.A.");
usaLabel.setBounds(210,200,50,25);
mapPanel.add(usaLabel);
mapPanel.add(scrollPane);

jfrm.add(mapPanel);
jfrm.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new HelloWorld();
}
});
}
}

但是如果我稍微滚动一下,美国标签就会从 map 上消失: Swing app image

JLabel 位置必须是绝对的,如您所见。如何避免这种情况?

最佳答案

usaLabel 添加到包含图标的标签,而不是滚动 Pane :

ImageIcon imageIcon = new ImageIcon("src\\SwingExp\\img\\map.gif");
JLabel map = new JLabel( imageIcon );
JScrollPane scrollPane = new JScrollPane( map );
//JScrollPane scrollPane = new JScrollPane(new JLabel(imageIcon));
scrollPane.setBounds(5,5,600,400);
JLabel usaLabel = new JLabel("U.S.A.");
usaLabel.setBounds(210,200,50,25);
map.add( usaLabel );
//mapPanel.add(usaLabel);

同时停止在任何地方使用空布局。不需要您的 mapPanel 变量。只需将滚动 Pane 直接添加到框架的内容 Pane 即可。默认情况下,滚动 Pane 将添加到中心并占据框架中的所有可用空间。

关于java - JLabel滚动后消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21833460/

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