java - 简单的 Java 2D 图形 : draw a rectangle?

标签 java swing

<分区>

我正在尝试运行 Java 2D 图形“hello world”,但发现它异常困难(即,我在谷歌上搜索“java hello world example”的变体,结果是空的)。谁能帮我举一个最小的 hell 世界示例?

编辑

虽然这是一个很好的起点,"The Java Tutorials: Performing Custom Painting" .

最佳答案

要在 Swing 中绘制矩形,您应该:

  • 首先,切勿直接在 JFrame 或其他顶级窗口中绘制。
  • 而是在 JPanel、JComponent 或其他最终从 JComponent 扩展的类中绘制。
  • 您应该覆盖 paintComponent(Graphics g) 方法。
  • 一定要调用super方法
  • 您应该使用 JVM 提供给方法的 Graphics 对象绘制矩形。
  • 你应该阅读 Swing 教程中的绘画。

清楚了吗?

例如,

import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.*;

public class DrawRect extends JPanel {
   private static final int RECT_X = 20;
   private static final int RECT_Y = RECT_X;
   private static final int RECT_WIDTH = 100;
   private static final int RECT_HEIGHT = RECT_WIDTH;

   @Override
   protected void paintComponent(Graphics g) {
      super.paintComponent(g);
      // draw the rectangle here
      g.drawRect(RECT_X, RECT_Y, RECT_WIDTH, RECT_HEIGHT);
   }

   @Override
   public Dimension getPreferredSize() {
      // so that our GUI is big enough
      return new Dimension(RECT_WIDTH + 2 * RECT_X, RECT_HEIGHT + 2 * RECT_Y);
   }

   // create the GUI explicitly on the Swing event thread
   private static void createAndShowGui() {
      DrawRect mainPanel = new DrawRect();

      JFrame frame = new JFrame("DrawRect");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.getContentPane().add(mainPanel);
      frame.pack();
      frame.setLocationByPlatform(true);
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            createAndShowGui();
         }
      });
   }
}

关于java - 简单的 Java 2D 图形 : draw a rectangle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21964768/

相关文章:

java - 在组合框中获取文本文件

java - 如何从 Tab 键导航中排除列?

java - 解析谷歌日历时SAX解析异常

java - 从 View 中 hibernate

java - Spring 4 @Scheduled停止工作

java - 如何避免线程中出现 HeadlessException?

java - 如何在java中向应用程序顶部绘制一个矩形

java - 使用正则表达式捕获列表中的 header

java - 以 Spring 形式为单个对象定义 POJO id

java - 调整 JDialog 和 JTable 列的大小时出现问题