0

私はEclipseを使用しており、次のコードでJFrameにグラフィックラインを作成したい:

public void Makeline () {
    Graphics g=new Graphics(); // has error
    Graphics2D g2 = (Graphics2D) g;
    g2.draw(new Line2D.Double(0, 0, 20, 20));
}

しかし、次のエラーが発生します:

Cannot instantiate the type Graphics
4

3 に答える 3

3

解決策は paintComponent メソッドを上書きすることですが、JFrame は JComponent ではないため、JFrame の代わりに JPanel を使用してから、JPanel を JFrame に追加します。

paintComponent(Graphics g) {
    super.paintComponent(g)

    //here goes your code
    Graphics2D g2 = (Graphics2D) g;
    ...
}
于 2013-10-10T09:15:53.800 に答える
3

GraphicsAPI 全体の要件を定義する抽象クラスです。

Swing でのペイントは、ペイント チェーンのコンテキスト内で行われます。これは通常、paintComponentから拡張するコンポーネントのメソッド内で実行されます。JComponent

詳細については、カスタム ペインティングの実行を参照してください。

BufferdImagea を使用してコンテキストを生成することもできますがGraphics、画像を描画する場所が必要なため、達成しようとしていることがわかります。

于 2013-10-10T09:18:37.827 に答える
0

Graphics は抽象クラスです。次の方法ではインスタンス化できません。

 Graphics g=new Graphics(); 

にアクセスするGraphics2Dには、まずメソッドをオーバーライドする必要がありますpaint(Graphics)

@Override
public void paint(Graphics g) {
    Graphics2D g2 = (Graphics2D) g;
}
于 2013-10-10T09:17:38.650 に答える