Java 图形的最小代码?

Java 图形的最小代码?,java,graphics,jframe,Java,Graphics,Jframe,我可以使用什么样的绝对主义最小代码给出一个JFrame和图形,例如,我可以去掉paint()方法吗,我是否需要调用super.update(g)?您不应该覆盖paint()。这通常适用于AWT 您不应触摸update()。这同样适用于AWT 在Swing中,您覆盖JPanel(或JComponent)的paintComponent()方法,并将面板添加到框架中 您根本不需要触摸JFrame 有关更多信息和示例,请阅读上的Swing教程。在JFrame中仍然可以覆盖paint()方法。更好的解决方

我可以使用什么样的绝对主义最小代码给出一个
JFrame
图形
,例如,我可以去掉
paint()
方法吗,我是否需要调用super.update(g)?

您不应该覆盖paint()。这通常适用于AWT

您不应触摸update()。这同样适用于AWT

在Swing中,您覆盖
JPanel
(或
JComponent
)的
paintComponent()
方法,并将面板添加到框架中

您根本不需要触摸
JFrame

有关更多信息和示例,请阅读上的Swing教程。

在JFrame中仍然可以覆盖paint()方法。更好的解决方案是添加一个扩展JPanel并重写“paintComponent(Graphics g)”方法的小类,作为绘制图形的画布。然后,您只需将该面板作为另一个组件添加到JFrame中。为了更新内容,可以调用repaint()方法。 例如:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DoNotEnterSign extends JPanel {
public void paintComponent(Graphics g) {
    super.paintComponent(g);

    Point center = new Point(getWidth() / 2, getHeight() / 2);
    int radius = Math.min(getWidth() / 2, getHeight() / 2) - 5;
    int innerRadius = (int)(radius * 0.9);
    int barWidth = (int)(innerRadius * 1.4);
    int barHeight = (int)(innerRadius * 0.35);
    g.fillRect(center.x - barWidth/2, center.y - barHeight/2,
               barWidth, barHeight);
}

public static void main(String[] args) {
    JFrame frame = new JFrame("A simple graphics program");
    frame.setSize(400, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel panel = new DoNotEnterSign();
    panel.setBackground(Color.GREEN.darker());
    frame.getContentPane().add(panel, BorderLayout.CENTER);
    frame.setVisible(true);
}}
这是Swing类的基本组件。虽然可以有更简单的解决方案。 现在您可能不需要更新()内容,例如,如果您有一个textarea,您可以在其中输入文本和一个按钮以转换为大写

public void actionPerformed(ActionEvent e) {
                area.setText(area.getText().toUpperCase());

将在找到setTextarea()后立即更新自身。

您尝试了什么?你被困在哪里?你的限制背后的动机是什么?@HovercraftFullOfEels我只是在寻找绘制图形的最佳方式…@ExotickBoyPl可能是Cairo或OpenGL。或两者兼而有之: