シェイプとボタンが含まれているパネルを作成しようとしています。問題は、JPanelにボタンを追加すると、シェイプが表示されないということです。それは単に私の画面の上部にボタンを表示します。四角形は、パネルではなく枠に四角形を追加すると表示されますが、ボタンは表示されません。JButtonをJPanelに追加するとシェイプが表示されない
public static void main(String[] args)
{
JFrame frame = new JFrame();
JPanel panel = new JPanel();
//Replace FRAME_WIDTH/HEIGHT with a number greater than 100
frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
frame.setTitle("Square Game");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Creates a Red Square from RedSquare
final RedSquare red = new RedSquare();
panel.add(red);
JButton button = new JButton();
button.setText("Red");
panel.add(button);
frame.add(panel);
frame.setVisible(true);
}
public class RedSquare extends JComponent
{
private Square sq;
private int x = 100;
private int y = 0;
private Graphics2D g2;
public RedSquare()
{
sq = new Square(x,y,Color.red);
}
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
sq.draw(g2);
}
public int getX()
{
return x;
}
public int getY()
{
return y;
}
public void moveBy()
{
y++;
sq = new Square(x,y,Color.red);
repaint();
}
}
public class Square
{
private int x;
private int y;
private Color color;
public Square(int x, int y, Color color)
{
this.x = x;
this.y = y;
this.color = color;
}
public void draw(Graphics2D g2)
{
Rectangle body = new Rectangle(x, y, 40, 40);
g2.draw(body);
g2.setPaint(color);
g2.fill(body);
g2.draw(body);
}
}
この作業を行うには別の操作が必要ですか?何か不足していますか?私はこれに新しいですし、どんな助けも大歓迎です。
はい:あなたはレイアウトなどを使用することができます
越え。 JButton用のJPanelを作成し、別のJPanelから別の描画パネルを作成します。 –
すぐに役立つように、[MCVE]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿してください。 'RedSquare'は単なるグラフィックオブジェクトではなく、' JComponent'です。それはあなたが望むような方法で「積み重ね」られないことを意味します。 –
ああ、今は 'FlowLayout'に追加されているのがわかります..' RedSquare'は 'getPreferredSize()'メソッドをオーバーライドしていますか?ああ、心配しないでください.. MCVEはすべてを(私達は知る必要がある)教えてくれるでしょう。 –