Java:如何在 Jframe 组件内显示标签

问题描述 投票:0回答:1

我尝试在容器(JFrame)底部显示文本,但它没有出现....

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;


public class Peintre extends JFrame implements MouseMotionListener {
    private int valeurX ;
    private int valeurY;
    
    public Peintre() {
        super("Programme simple de dessin");
        addMouseMotionListener(this);
        JLabel label = new JLabel("Tirer sur la souris pour dessiner");
        label.setForeground(Color.PINK);
        label.setFont(new Font("Arial", Font.PLAIN, 20));
        add(label,BorderLayout.SOUTH);
        setSize(700, 500);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public void paint(Graphics g) {
        g.fillOval(valeurX, valeurY, 15, 15);
    }
    
    public void mouseDragged(MouseEvent e) {
        valeurX = e.getX();
        valeurY = e.getY();

        repaint();
    }

    public void mouseMoved(MouseEvent e) {}

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

    }

}

我试过了:

  • 检查容器的宽度和高度
  • 设置标签在框架内的位置
  • 更改颜色和字体系列以提高可见性

我想在框架底部显示多个字符

java swing label jframe
1个回答
0
投票

你已经超越了

public void paint(Graphics g) 

您的 JFrame。这意味着您添加到其中的任何组件将不再绘制。调用

super.paint(g);
作为绘制实现中的第一个操作来调用 JFrame 实现,然后绘制椭圆形。

一般来说,你必须小心 Swing 中的重写方法。在这样做之前,请务必检查他们是否没有在做重要的事情。

© www.soinside.com 2019 - 2024. All rights reserved.