1

私はスイングで絵を学ぼうとしています。円を作成し、JPanel の特定の位置に配置しようとしています。これは私が思いついたものですが、図は表示されません:

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

public class Circles extends JPanel {
private static final long serialVersionUID = 1L;

public Circles(){
    setBackground(Color.white);
    setPreferredSize(new Dimension(300, 300));
}

public void paintComponent(Graphics g){
    super.paintComponents(g);
    g.setColor(Color.black);
    g.drawRect(10, 10, 50, 50);
}
}

これは、プログラムを開始するクラスです。

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

public class StartCircles extends JFrame{
private static final long serialVersionUID = 1L;

private Circles circle;
public StartCircles(){
    Container c = getContentPane();
    circle = new Circles();
    c.setBackground(Color.white);
    c.setLayout(new FlowLayout());
    setSize(300, 300);
    c.add(circle);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
}

public static void main(String[] args){
    StartCircles c1 = new StartCircles();
}
}

私は何を間違っていますか?必要な場所に図を配置するにはどうすればよいですか?

4

3 に答える 3

3

コードは完全に実行されていますが、ここでは Rectangle を描画しています。円を描きたい場合は、使用する必要があります

以下のいずれかの方法

g.fillOval(10, 10, 50, 50);

g.drawOval(10, 10, 50, 50);
于 2013-10-20T14:38:46.633 に答える
3

修理済み

ソースのコメントに注意して、この SSCCE を試してください。

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

public class StartCircles extends JFrame{
private static final long serialVersionUID = 1L;

private Circles circle;
public StartCircles(){
    Container c = getContentPane();
    circle = new Circles();
    c.setBackground(Color.white);
    c.setLayout(new FlowLayout());
    //setSize(300, 300);
    c.add(circle);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    pack(); // size the GUI to the components within it
}

public static void main(String[] args){
    StartCircles c1 = new StartCircles();
}
}

class Circles extends JPanel {
private static final long serialVersionUID = 1L;

public Circles(){
    setBackground(Color.white);
    setPreferredSize(new Dimension(300, 300));
}

public void paintComponent(Graphics g){
    //super.paintComponents(g);  // WRONG METHOD!
    super.paintComponent(g);
    g.setColor(Color.black);
    g.drawRect(10, 10, 50, 50);
}
}
于 2013-10-20T14:40:20.973 に答える
2

g.drawRect(10, 10, 50, 50);必ず長方形になります。円を描く方法については、ドキュメントを参照する必要があります。

を使用して描画する必要がありますdrawOval()。4 つのパラメーターが必要です。

x - 描画される楕円の左上隅の x 座標。
y - 描画される楕円の左上隅の y 座標。
width - 描画される楕円の幅。
height - 描画される楕円の高さ。

だから、あなたdrawRect()drawOval()

于 2013-10-20T14:38:53.483 に答える