2015-11-04 83 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组件,所以会令人困惑。使用更具描述性的名称。