java - 将 JLabel 添加到我的钟面不起作用

标签 java jpanel jlabel

我尝试添加其他答案中所示的流程布局,但它仍然不起作用。

我还尝试将 JLabel 代码移至构造函数中,但这也不起作用。

public class Paint {

    public static void main(String[] args) {
        JFrame frame = new JFrame("Paint");
        frame.setSize(500,500);
        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);

        Draw draw = new Draw();
        frame.add(draw);
        frame.setVisible(true);
    }
}


public class Draw extends JPanel{

    public Draw(){
        JLabel one = new JLabel("12",JLabel.CENTER);
        setLayout(new FlowLayout());
        add(one);
    }

    public void paint(Graphics g){
        g.drawOval(70, 60, 190, 190);

        g.setColor(Color.BLACK);
        g.drawLine(90, 160, 170, 160);
        g.drawLine(120, 190,170 , 160);

        g.setColor(Color.GRAY);
        g.fillOval(155, 153, 20, 20);
    }
}

最佳答案

  • 更改paint以覆盖paintComponent
  • 在进行任何自定义绘制之前调用 super.paintComponent

enter image description here

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Paint {

    public static void main(String[] args) {
        JFrame frame = new JFrame("Paint");
        frame.setSize(500, 500);
        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);

        Draw draw = new Draw();
        frame.add(draw);
        frame.setVisible(true);
    }

    public static class Draw extends JPanel {

        public Draw() {
            JLabel one = new JLabel("12", JLabel.CENTER);
            setLayout(new FlowLayout());
            add(one);
        }

        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g); 
            g.drawOval(70, 60, 190, 190);

            g.setColor(Color.BLACK);
            g.drawLine(90, 160, 170, 160);
            g.drawLine(120, 190, 170, 160);

            g.setColor(Color.GRAY);
            g.fillOval(155, 153, 20, 20);
        }
    }
}

关于java - 将 JLabel 添加到我的钟面不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41604217/

相关文章:

java - 如何在再次显示之前清空标签?在java中

java - 在 Eclipse 中调试 org.apache.struts.action.RequestProcessor 等类

java - 如何避免这种冗余并关闭未使用的文件类?

java - 我想将滚动条添加到 JPanel。有谁知道如何解决这一问题?

java - Swing Jlabel 不显示

java - 使用 if 语句和单选按钮在 Jlabel 上显示文本

java - JUnit执行顺序

Java - 读取现有进程的输出流

java - JPanel 中的背景重绘

java - 使特定组件在 Scrollable JPanel 中可见