2016-05-15 3 views
1

JPanelに矩形を描画しようとしていますが、矩形が表示されません。私は何を逃したのですか?JPanelに矩形がありません

これまで私がこれまでに試したことは次のとおりです。

public class selectSeat extends JFrame { 

    JPanel panel = new JPanel(); 

    public static void main(String[] args) { 
     selectSeat frameTabel = new selectSeat("","",""); 
    } 

    public selectSeat(String title, String day, String time) 
    { 
     super("Select Seat"); 
     setSize(350,350); 
     setLocation(500,280); 
     panel.setLayout(null); 
     RectDraw rect= new RectDraw(); 
     panel.add(rect); 

     getContentPane().add(panel); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setVisible(true); 

    } 

    private static class RectDraw extends JPanel 
    { 
     protected void paintComponent(Graphics g) { 
      super.paintComponent(g); 
      g.drawRect(230,80,10,10); 
      g.setColor(Color.RED); 
      g.fillRect(230,80,10,10); 
      } 

     public Dimension getPreferredSize() { 
      return new Dimension(50, 20); // appropriate constants 
      } 


    } 

} 
+1

Java GUIは、異なるロケールで異なるPLAFを使用する異なるOS、画面サイズ、画面解像度などで動作する必要があります。したがって、ピクセルの完全なレイアウトには役立ちません。代わりに、レイアウトマネージャや[それらの組み合わせ](http://stackoverflow.com/a/5630271/418556)と[空白](http://stackoverflow.com/a/17874718/)のレイアウトパディングとボーダーを使用してください。 418556)。 –

答えて

1

絶対レイアウト(nullレイアウト)を使用していることに注目してください。オブジェクトを定位置に配置するには、Component.setboundsが必要です。

public Test(String title, String day, String time) 
{ 
    super("Select Seat"); 
    setSize(350,350); 
    setLocation(500,280); 
    panel.setLayout(null); 
    RectDraw rect= new RectDraw(); 
    rect.setBounds(0, 0, 100, 100); 
    panel.add(rect); 

    getContentPane().add(panel); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setVisible(true); 

} 

チェックアウトの詳細: https://docs.oracle.com/javase/tutorial/uiswing/layout/problems.html

注:だけでなくAWTからのデバッグメッセージを取得するには、Ctrl + Shiftキー+ F1を試してみてください。

+0

*「絶対レイアウト(ヌルレイアウト)を使用していることに気付きました」*使用しないでください。つまり、次の10つの問題を解決することができなければ、それを喜んで解決しなければなりません。 –

2

矩形を描画していますが、表示されているJPanelの範囲外の280,802にあります。描画位置はJPanel内の座標を基準にしていることを理解してください。

関連する問題