先说下要做的事情。
目前有一个5*5的矩阵,由*,o组成。
要做的事情就是建出窗口网格中,首先把矩阵打出来。然后通过按钮把矩阵中所有的o转变为!并重新打出。现在我的程序:import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.io.*;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class b {  
 public static char [][]s={{'*','*','o','o','*'},{'*','*','*','o','*'},
  {'*','o','*','o','*'},{'o','*','*','o','*'},{'*','o','*','o','*'}};  
 static JPanel panel;
 static JButton button[];
 private static boolean flag = false;  
 
 public static void main(String[] args) throws IOException {  //////第一次输出窗口  
  b ma= new b();   
  flag=true;  
  for(int m=0;m<5;m++)
  {
  for(int n=0;n<5;n++)
  {
  if(s[m][n]=='o')
  {
  s[m][n]='!';  
  }   
  }
  }
//////第二次输出窗口,将第一次窗口中的o变为!并改变了颜色   
  b mb = new b();   
  }
/////////窗口  
  b()
  {  
  JFrame aWindow=new JFrame("This is a Grid Layout");   
  Toolkit theKit=aWindow.getToolkit();
  Dimension wndSize=theKit.getScreenSize();   
  aWindow.setBounds(200,80,400, 600);  
  aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  GridLayout grid=new GridLayout(10,10);
  Container content=aWindow.getContentPane();
  content.setLayout(grid);
  EtchedBorder edge=new EtchedBorder(EtchedBorder.RAISED);;   
  JButton [][]button=new JButton[5][5];   
  for(int m=0;m<5;m++)
  for(int n=0;n<5;n++)   
  {   
  if(s[m][n]=='o') content.add(button[m][n]=new JButton("o"));   
  if(s[m][n]=='*') content.add(button[m][n]=new JButton("*"));  if(flag=true)
  {
  if(s[m][n]=='!'){
  content.add(button[m][n]=new JButton("!"));
  button[m][n].setBackground(Color.gray);
  }}
  }
  aWindow.setVisible(true);  
 }
    
  private JButton setBorder(EtchedBorder edge) {
 // TODO Auto-generated method stub
 return null;
  }
 private static void tt() {
  // TODO Auto-generated method stub  
 }
}目前的状况就是可以先打出矩阵,然后直接打出改变后的矩阵。问题1:
现在的窗口不管我怎么加JMenu,都不会有菜单栏出线。。问下大家怎么加上菜单栏。。
问题2:
现在的窗口是矩阵自动的布满了整个窗口。。有没有办法不让他四周自动就贴上窗口的边线。。

解决方案 »

  1.   

    加JMenu得先加个JMenuBarJMenuBar menuBar = new JMenuBar();
    JMenu menu = new JMenu("...");
    JMenu menuItem  = new JMenuItem("...");menu.add(menuItem);
    menuBar.add(menu);再把menuBar添加到你的frame中
      

  2.   

    我在b()下面加过:
    setJMenuBar(menuBar);
    JMenu menu=new JMenu("File");
    JMenuItem menuItem = new JMenuItem("File");
    menu.add(menuItem);
    menuBar.add(menu);可是没用。。还是菜单加进来。。         
      

  3.   

    - -可以加啊b()
    {
    JFrame aWindow = new JFrame("This is a Grid Layout");
    /////////////////////////////////////////////////增加的
    JMenuBar menuBar = new JMenuBar();
    aWindow.setJMenuBar(menuBar);
    JMenu menu=new JMenu("File");
    JMenuItem menuItem = new JMenuItem("File");
    menu.add(menuItem);
    menuBar.add(menu);
    /////////////////////////////////////////////////
    Toolkit theKit = aWindow.getToolkit();
    Dimension wndSize = theKit.getScreenSize();
    aWindow.setBounds(200, 80, 400, 600);
    aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    GridLayout grid = new GridLayout(10, 10);
    Container content = aWindow.getContentPane();
    content.setLayout(grid);
    EtchedBorder edge = new EtchedBorder(EtchedBorder.RAISED);

    JButton[][] button = new JButton[5][5];
    for (int m = 0; m < 5; m++)
    for (int n = 0; n < 5; n++)
    {
    if (s[m][n] == 'o')
    content.add(button[m][n] = new JButton("o"));
    if (s[m][n] == '*')
    content.add(button[m][n] = new JButton("*")); if (flag = true)
    {
    if (s[m][n] == '!')
    {
    content.add(button[m][n] = new JButton("!"));
    button[m][n].setBackground(Color.gray);
    }
    }
    }
    aWindow.setVisible(true);
    }
      

  4.   

    第二个问题,如果可以的话,把awindow的布局设置为null,然后给awindow添加一个JPanel p;然后用
    p.setBounds(..),然后再p中添加按钮,这样就不会贴着边线了。你试试找找有没有更好的方法