NetBeans GUI Builder映像

时间:2013-06-05 00:10:31

标签: java swing jlabel embedded-resource imageicon

我添加了一个我想用作背景图像的图像,我想将jLabel放在它上面。所以我使用图像图标功能并显示图像,但是当我尝试在其上放置一个jLabel时,它会移到一边。我已经尝试了几个教程,它似乎可以在youtube上运行,但是当我尝试自己做同样的事情时,它们会被移出位置。

field.setIcon(new javax.swing.ImageIcon(getClass().getResource("/wiffleball/resources/field2.png"))); // NOI18N

2 个答案:

答案 0 :(得分:1)

默认情况下,JLabel没有布局管理器。 Label也有默认的文本定位,通常与左边对齐,你需要更改所有这些默认值......

enter image description here

您可能希望使用BorderLayout之外的其他布局管理器,但这只是一个示例......

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class SimpleLabel {

    public static void main(String[] args) {
        new SimpleLabel();
    }

    public SimpleLabel() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JLabel label = new JLabel(new ImageIcon("C:\\hold\\thumbnails\\_cg_836___Tilting_Windmills___by_Serena_Clearwater.png"));
                label.setHorizontalAlignment(JLabel.CENTER);
                label.setVerticalAlignment(JLabel.CENTER);

                label.setLayout(new BorderLayout());

                JLabel child = new JLabel("Can you see me?");
                child.setForeground(Color.WHITE);
                child.setFont(label.getFont().deriveFont(Font.BOLD, 24f));
                child.setHorizontalAlignment(JLabel.CENTER);
                child.setVerticalAlignment(JLabel.CENTER);
                child.setHorizontalTextPosition(JLabel.CENTER);
                child.setVerticalTextPosition(JLabel.CENTER);
                label.add(child);

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(label);
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }
}

答案 1 :(得分:0)

我把所有东西放在jPanel上,而这似乎就是这么做的。它只是需要一些修补。谢谢!