java - 在java中画一条没有继承的线

标签 java swing drawing line jlabel

我试图在java程序中画一条线,但线还没有画

我已经尝试了每个功能,但在 JLable 上仍然没有行

我不知道为什么JLable的图形在我画线后没有更新并且它仍然是空的。

请帮帮我

import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class t
{
private static JFrame frame;
private static JLabel field;

public static void main(String[] args)
{
    frame = new JFrame("Simple Server");
    frame.setLayout(new FlowLayout());

    frame.setPreferredSize(new Dimension(1200, 700));
    frame.setSize(new Dimension(1200, 700));
    frame.setMinimumSize(new Dimension(1200, 700));

    frame.addWindowListener(new WindowAdapter()
    {
        @Override
        public void windowClosing(WindowEvent we)
        {
            System.gc();
            System.exit(0);
        }
    });

    int maxW = 1000, maxH = 600;
    field = new JLabel();
    field.setSize(maxW, maxH);
    field.setPreferredSize(new Dimension(maxW, maxH));
    field.setMaximumSize(new Dimension(maxW, maxH));
    field.setMinimumSize(new Dimension(maxW, maxH));

    field.setBorder(BorderFactory.createLineBorder(Color.BLACK, 3));
    field.setBackground(Color.GREEN);
    field.setOpaque(true);

    frame.add(field, BorderLayout.CENTER);

    frame.pack();
    frame.setVisible(true);

    Graphics g = field.getGraphics();
    g.drawLine(0, 0, 100, 100);

    field.paintComponents(g);
    field.paint(g);
    field.paintAll(g);
    field.update(g);
    field.repaint();

    frame.paint(g);
    frame.paintAll(g);
    frame.paintComponents(g);
    frame.update(g);
    frame.repaint();
    frame.setVisible(true);
}

最佳答案

getGraphics 可以返回 null,并且最多是上一个绘制周期所绘制内容的快照。

虽然您可以使用此技术,但下次需要绘制该组件时,您在其上绘制的任何内容都将被删除。

看看Perofrming Custom PaintingPainting in AWT and Swing有关绘画工作原理的更多详细信息

关于java - 在java中画一条没有继承的线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17769865/

相关文章:

ios - 如何平滑 iOS 中 2 点之间的线?

android - 如何在表面上绘制平滑的运动

java - 为什么不能在没有赋值的情况下使用三元运算符(左侧的变量)?

java - 将 SQL Server 日期数据获取到 Joda 对象的最佳方法?

java - 不能在 JFrame 中绘制超过一个正方形

java - 将 hsqlDB 集成到 netbeans 7 IDE 中

java - 在 GUI 中调整 JTable 中的列大小

python - Matplotlib 在绘图时将最后一个点连接到第一个点

java - 打开没有 Auto_Openening 的工作簿

java - 使用 Com4j 从 QC 获取测试用例列表