2015-11-04 82 views
0

我正在嘗試在網格佈局的右側添加數字。問題在於該數字正在被視爲網格的一部分。我希望它分開顯示在同一幀的網格右側。我試圖製作一個不同的容器,但它不起作用。由於在網格佈局的右側添加數字

Canvas.java

import java.awt.BorderLayout; 
import java.awt.Container; 
import java.awt.FlowLayout; 
import java.awt.GridBagLayout; 
import java.awt.GridLayout; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JTextArea; 
public class Canvas extends JFrame{ 
    public Canvas(){ 
     super("Canvas to draw"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setSize(700,700); 

     Container pane = getContentPane(); 
     pane.setLayout(new GridLayout(10,10)); 
     for (int i = 0; i < 100; i++) { 
      JButton button = new JButton(Integer.toString(i + 1)); 
      pane.add(button); 
     } 
     FigurePane f = new FigurePane(); 
     pane.add(f); 
    } 
} 

FigurePane.java

import java.awt.*; 
import java.util.Random; 

import javax.swing.*; 

public class FigurePane extends JPanel{ 
    public void paintComponent(Graphics comp){ 
     Graphics2D comp2D =(Graphics2D)comp; 
     GradientPaint p1=new  GradientPaint(2F,2F,Color.red,335F,335F,Color.blue); 
     comp2D.setPaint(p1); 
     comp2D.fillRect(2, 2, 335, 350); 
     } 
} 

Main.java

public class Main { 
    public static void main(String[] args) { 
     Canvas c = new Canvas(); 
     c.setVisible(true); 
    } 
} 
+0

我可以建議你使用GridBagLayout。它比GridLayout更可定製。 –

回答

1

使用嵌套的面板與適當的佈局管理器。例如:

JPanel grid = new JPanel(new GridLayout()); 
FigurePanel figure = new FigurePanel(); 
JPanel main = new JPanel(new BorderLayout()); 
main.add(grid, BorderLayout.CENTER); 
main.add(figure, BorderLayout.LINE_END); 
add(main, BorderLayout.CENTER); 

此外,不要叫你的班級「帆布」。這個名稱有一個AWT組件,所以會令人困惑。使用更具描述性的名稱。