我想使用swing和awt在java中创建一个UI,以便:
**** BUTTON1 , BUTTON2,BUTTON3, BUTTON4, BUTTON5 **** (in a row )
***** GRID OF SIZE 20 X 20 ****** (next)
frame.setSize(1000,700);
frame.setLayout(new BorderLayout());
smile = new ImageIcon("C:/Users/RISHABH/Desktop/PP/MineSweeper/sm.png");
sad = new ImageIcon("C:/Users/RISHABH/Desktop/PP/MineSweeper/smb.png");
mine = new ImageIcon("C:/Users/RISHABH/Desktop/PP/MineSweeper/mine.png");
panel1.setLayout(new BorderLayout());
panel2.setLayout(new GridLayout());
smiley.setIcon(smile);
Dimension d = new Dimension(30,20);
smiley.setPreferredSize(d);//.setSize(30, 20);
panel1.add(timer);
panel1.add(score);
panel1.add(smiley);
panel1.validate();
//frame.add(smiley,BorderLayout.NORTH);
//smiley.addActionListener(this);
//Button grid
buttons = new JButton[nrows][ncols];
grid.setLayout(new GridLayout(nrows,ncols));
for(int i=0;i<nrows;i++){
for(int j=0;j<ncols;j++){
buttons[i][j] = new JButton();
buttons[i][j].addActionListener(this);
grid.add(buttons[i][j]);
}
}
panel2.add(grid,BorderLayout.CENTER);
//frame.add(grid,BorderLayout.CENTER);
frame.add(panel1);
frame.add(panel2);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
我创建了两个面板.. 第一个面板添加了所有3个按钮,布局设置为BorderLayout 第二个面板包含网格.. 然后将两个面板添加到具有布局边框布局的框架
但是没有添加按钮,网格显得很小......当我点击该网格按钮时,它会展开..
有人可以帮我创建这个UI吗?我是java的新手。请帮忙。
答案 0 :(得分:2)
但未添加按钮
frame.setLayout(new BorderLayout());
...
frame.add(panel1);
frame.add(panel2);
您正在使用BorderLayout。您无法将组件添加到CENTER,只会显示添加的最后一个组件。尝试:
frame.add(panel1, BorderLayout.NORTH);
frame.add(panel2.CENTER);
并且网格显得很小
frame.setSize(1000,700);
不要硬编码大小。让布局管理器通过调用pack()
方法来完成它的工作:
frame.pack();
frame.setVisible(true);
不要哈哈