2016-07-04 7 views
0

私はJPanelを拡張するMapPanelクラスを持っています。私はこのグリッドにいくつかのオブジェクトを表示し、それらのうちのいくつかを線でリンクしたいと思います。だから、この線をMapPanel.paintComponentに描画しようとしていますが、私は線が表示されていません。 System.out.println()でラインパラメータ(x1、y1、x2、y2)をチェックしていますが、これらは正しく表示されています(0 <の種類< 600、パネルにぴったり合うもの)。私も固定パラメータで1行だけ描画しようとしますが、私は同じ問題があります。DrawLine over GridBagLayoutは何も表示しません

public class NewMapPanel extends JPanel { 

    private static final long serialVersionUID = 1L; 

    private GameMap gameMap; 
    private Grid grid; 
    private JPanel contentPanel; 

    public NewMapPanel() { 
     this.setBackground(Color.white); 
    } 

    public void updateMap(GameMap gameMap) { 
     this.gameMap = gameMap; 

     ...load the object into my custom object grid ... 

     contentPanel = new JPanel(new GridBagLayout()); 
     contentPanel.setBackground(Color.GREEN); 
     GridBagConstraints c = new GridBagConstraints(); 

     // draw the grid 
     for (City city : gameMap.getCities().values()) { 
      CityPanel cityPanel = new CityPanel(city, grid); 

      c = new GridBagConstraints(); 
      c.gridx = grid.getColumn(city); 
      c.gridy = grid.getRow(city); 
      c.gridwidth = 1; 
      c.gridheight = 1; 
      c.fill = GridBagConstraints.BOTH; 
      c.anchor = GridBagConstraints.CENTER; 

      contentPanel.add(cityPanel, c); 
     } 

     add(contentPanel, BorderLayout.CENTER); 
    } 


    @Override 
    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 

     contentPanel.setSize(super.getWidth(), super.getHeight()); 
     grid.setSize(super.getWidth(), super.getHeight()); //to get the right parameters to be used into drawLine 


     for (City city1 : gameMap.getCities().values()) { 
      int x1 = grid.getBarycenterX(city1); 
      int y1 = grid.getBarycenterY(city1); 
      for (City city2 : city1.getAdjacentCities()) { 
       int x2 = grid.getBarycenterX(city2); 
       int y2 = grid.getBarycenterY(city2); 

       System.out.println("(" + x1 + "," + y1 + ") -> (" + x2 + "," + y2 + ")"); 
       g.drawLine(x1, y1, x2, y2); 

      } 
     } 


    } 

} 
+0

私たちはクラスCityを持っていません。コピー貼り付けが可能な[mcve]を投稿してください。コンパイルして問題を表示してください。 – Frakcool

+0

['getPreferredSize()'](http: /stackoverflow.com/q/7229226/230513)と 'pack()'は、初期ジオメトリを設定するための囲みウィンドウです。 – trashgod

+0

どこでそれをすればよいですか?そして何? – user1315621

答えて

0

色を設定しようとしましたか? g.setColor(Color.black);

+0

動作しません – user1315621

関連する問題