java - 在绘图顶部显示 JLabel 文本

标签 java swing jframe draw jlabel

我不知道如何进行这项工作。

我创建了一个主类,在 JFrame 中扩展。 如果我使用draw() 和paint() 方法运行程序来绘制某些内容,我的标签将不可见。如果我只运行 Main() 类而不使用draw() 和paint() 方法,它就可以工作。

我正在尝试使用 Swing 组件,但这真的很难(我真是个菜鸟 T.T)。

请你帮帮我好吗?

我想看到矩形顶部的标签。

public class Main extends JFrame {

    JLabel label;

    public Main() {
         setSize(400, 300);
         setTitle("Title");
         setDefaultCloseOperation(EXIT_ON_CLOSE);
         setLocationRelativeTo(null);
         setVisible(true);

         label = new JLabel("Text inside");
         add(label, BorderLayout.NORTH);
   }

    public void paint(Graphics g){
        Image img = createImage(getWidth(), getHeight());
        Graphics gr = img.getGraphics();
        draw(gr);
        g.drawImage(img, 0, 0, this);
    }

    public void draw(Graphics g){
        g.drawRect(100, 100, 200, 100);
    }

    public static void main(String[] args) {
        Main start = new Main();
    }
}

最佳答案

有几件事:

  1. 在显示 JFrame 之前将添加的标签向上移动,并将标签添加到 contentPane 而不是直接添加到 JFrame。

  2. 当前您的图像覆盖了所有内容,因为图像的宽度和高度等于您的框架。我不确定你想通过用矩形绘制空白图像来实现什么目的。您可以直接在 JFrame 本身上绘制矩形。

  3. 如果您打算将图像设置为背景并在其上方显示标签,那么您需要采取不同的做法。您需要创建一个包含所需图像的 JLabel 并将其添加为 contentPane。

希望这些建议能对您有所帮助。

关于java - 在绘图顶部显示 JLabel 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23939775/

相关文章:

java - servlet 和 jdbc 中未找到类异常

java - 等待图像完全加载 Selenium WebDriver

Java框架问题

java - 不同 JFrame 之间的信息交换

java - JFrame 背景图像不起作用

java - 如何在本地无线网络中的两部手机之间传输数据进行测试?

java - 我应该在 JComboBox 中使用枚举还是字符串

java - 在GUI应用程序中使用getResourceAsStream

java - Substance UI 和未修饰的 JDialog/JFrame

java - EMF 中可变属性的通知