先说下要做的事情。
目前有一个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:
现在的窗口是矩阵自动的布满了整个窗口。。有没有办法不让他四周自动就贴上窗口的边线。。
目前有一个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:
现在的窗口是矩阵自动的布满了整个窗口。。有没有办法不让他四周自动就贴上窗口的边线。。
JMenu menu = new JMenu("...");
JMenu menuItem = new JMenuItem("...");menu.add(menuItem);
menuBar.add(menu);再把menuBar添加到你的frame中
setJMenuBar(menuBar);
JMenu menu=new JMenu("File");
JMenuItem menuItem = new JMenuItem("File");
menu.add(menuItem);
menuBar.add(menu);可是没用。。还是菜单加进来。。
{
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);
}
p.setBounds(..),然后再p中添加按钮,这样就不会贴着边线了。你试试找找有没有更好的方法