1. ホーム
  2. java

[解決済み】シンプルなJavaの2Dグラフィックス:矩形を描く?[クローズド]

2022-02-19 14:06:10

質問

私は、Javaの2Dグラフィックス "hello world"を作成しようとしていますが、奇妙に難しいと感じています(つまり、私は "java hello world example" のバリエーションをググっていますが空振りに終わっています)。 どなたか、最小限のhellow worldの例で助けていただけませんか?

編集

これは良い出発点ですが。 "The Java Tutorials: カスタムペイントの実行" .

どのように解決するのですか?

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();
         }
      });
   }
}