java - JLabel位置-JAVA GUI

标签 java swing user-interface jpanel jlabel

我想在屏幕上的某些坐标处放置图像标签。
我使用了下面的代码,但它不起作用。
另外,当将注释行添加到代码中时,会出现错误

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;

public class EmiloLadderSnack
{
    public static void main(String args[])
    {
        Graphics g;
        JFrame frame=new JFrame("EmiloLadderSnack");
        JPanel panel=new JPanel();
        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
        frame.setBounds(0, 0, Toolkit.getDefaultToolkit().getScreenSize().width, Toolkit.getDefaultToolkit().getScreenSize().height);
        frame.setVisible(true);
        frame.add(panel);
        BufferedImage img=null;
        try
        {
            img=ImageIO.read(new File("/media/01CCE00FA6888D80/Achieve/Eclipse/EmiloLadderSnack/src/photo.jpg"));
        }
        catch(IOException e)
        {
            //g.drawString(e.toString(), 0, 0);
        }
        ImageIcon icon=new ImageIcon(img);
        JLabel lbl=new JLabel(icon);
        lbl.setLocation(50, 50);
        panel.add(lbl);
        lbl.setLocation(50, 50);
    }
}

请帮我解决这个问题

最佳答案

您应该首先将组件添加到框架中,然后调用 pack()setSize()setVisible()。在您的情况下,您将在框架可见后将 ImageIcon 添加到面板。添加 panel.revalidate(); 应该可以解决眼前的问题。但是,最好通过 How to Make Frames首先教程。

对于第二个问题,Graphics对象没有初始化。而且,这不是 Graphics 应该如何使用的。如果要在组件表面绘制字符串,请覆盖 paintComponent()并使用提供的 Graphics 对象。请参阅Lesson: Performing Custom Painting更多细节。否则,如果目的只是通知用户有关错误的信息,您可以使用 JOptionPane 。相关教程为How to Make Dialogs .

此外,使用绝对布局可能非常困难。查看A Visual Guide to Layout Managers了解不同的布局管理器及其基本用途。

关于java - JLabel位置-JAVA GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11388620/

相关文章:

java - 将两个组件放在一个 JPanel 容器上的基本示例?

java - 文本组件内容一段时间没有编辑时调用方法

c - XCB:映射一次后窗口不会取消映射

java - 如何用带有流的LinkedhashMap替换HashMap?

java - 线程内的代码比线程外的慢..?

java - 为什么 JFrame 不居中?

java - JFace 向导 : How to have the Progress Bar not disabling the Wizard GUI

java - JADE Con​​tractNet 和 GUI 问题

java - 将 JSONArray 转换为 POJO 类 List<type>,无法转换

java - Portlet URL 附加 session ID?