java – 将JLabel置于JLabel之上,其中包含图像
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 将JLabel置于JLabel之上,其中包含图像,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2393字,纯文字阅读大概需要4分钟。
内容图文
![java – 将JLabel置于JLabel之上,其中包含图像](/upload/InfoBanner/zyjiaocheng/816/50e1e63ddf88416aa8690802fb7a3606.jpg)
我很确定之前已经问过这个问题,但我的情况略有不同,因为我试图将JLabel置于JLabel作为背景的顶部,我想使用JLabel显示更改的数字并且需要数字显示在背景上,但是我有点摇摆n00b,感谢提前,Jonathan
解决方法:
如果您不需要完全理解您的要求,如果您只需要在背景图像上显示文字,那么最好将标签放在能够绘制背景的自定义面板上.
您可以获得布局管理器的好处而不会出现问题.
我从一个读取槽Performing Custom Painting和Graphics2D Trail开始.
如果这看起来令人生畏,JLabel实际上是一种Container,这意味着它实际上可以“包含”其他组件.
例
背景窗格……
public class PaintPane extends JPanel {
private Image background;
public PaintPane(Image image) {
// This is just an example, I'd prefer to use setters/getters
// and would also need to provide alignment options ;)
background = image;
}
@Override
public Dimension getPreferredSize() {
return background == null ? new Dimension(0, 0) : new Dimension(background.getWidth(this), background.getHeight(this));
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (background != null) {
Insets insets = getInsets();
int width = getWidth() - 1 - (insets.left + insets.right);
int height = getHeight() - 1 - (insets.top + insets.bottom);
int x = (width - background.getWidth(this)) / 2;
int y = (height - background.getHeight(this)) / 2;
g.drawImage(background, x, y, this);
}
}
}
用…构造
public TestLayoutOverlay() throws IOException { // Extends JFrame...
setTitle("test");
setLayout(new GridBagLayout());
setDefaultCloseOperation(EXIT_ON_CLOSE);
PaintPane pane = new PaintPane(ImageIO.read(new File("fire.jpg")));
pane.setLayout(new BorderLayout());
add(pane);
JLabel label = new JLabel("I'm on fire");
label.setFont(label.getFont().deriveFont(Font.BOLD, 48));
label.setForeground(Color.WHITE);
label.setHorizontalAlignment(JLabel.CENTER);
pane.add(label);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
只是为了表明我不偏见;),一个使用标签的例子……
public TestLayoutOverlay() {
setTitle("test");
setLayout(new GridBagLayout());
setDefaultCloseOperation(EXIT_ON_CLOSE);
JLabel background = new JLabel(new ImageIcon("fire.jpg"));
background.setLayout(new BorderLayout());
add(background);
JLabel label = new JLabel("I'm on fire");
label.setFont(label.getFont().deriveFont(Font.BOLD, 48));
label.setForeground(Color.WHITE);
label.setHorizontalAlignment(JLabel.CENTER);
background.add(label);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
内容总结
以上是互联网集市为您收集整理的java – 将JLabel置于JLabel之上,其中包含图像全部内容,希望文章能够帮你解决java – 将JLabel置于JLabel之上,其中包含图像所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。