我正在尝试在边框布局的中心和侧面创建一个带按钮的窗口,但是布局北侧的按钮通过EAST的按钮,我只希望它们通过CENTER。无论如何用空白填充右上角或在到达CENTER布局结束后停止生成按钮?
这是我的代码:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Start {
public static void main(String[] args){
JFrame okno = new JFrame("igrica");
okno.setVisible(true);
okno.setSize(680,680);
okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton[][] gumbi = new JButton[9][9];
JButton[][] gumbi2 = new JButton [9][9];
JButton[][] gumbi3 = new JButton [9][9];
JPanel panel = new JPanel(new BorderLayout());
okno.add(panel);
JPanel igralnoPolje = new JPanel(new GridLayout(9, 9));
panel.add(igralnoPolje, BorderLayout.CENTER);
for(int i = 0; i < 9; i++){
for(int j = 0; j < 9; j++){
gumbi[i][j] = new JButton();
gumbi[i][j].setBackground(Color.WHITE);
gumbi[i][j].addActionListener(new Poslusalec(gumbi));
igralnoPolje.add(gumbi[i][j]);
}
}
// BoxLayout vodoravneStevilke = new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS);
JPanel vodoravneStevilke = new JPanel(new GridLayout(9, 9));
panel.add(vodoravneStevilke, BorderLayout.EAST);
for(int i = 0; i < 9; i++){
for(int j = 0; j < 3; j++){
gumbi2[i][j] = new JButton();
gumbi2[i][j].setBackground(Color.WHITE);
gumbi2[i][j].setText("2");
// gumbi2[i][j].addActionListener(new Poslusalec(gumbi2));
vodoravneStevilke.add(gumbi2[i][j]);
}
}
JPanel navpicneStevilke = new JPanel(new GridLayout(3, 9));
panel.add(navpicneStevilke, BorderLayout.NORTH);
for(int i = 0; i < 9; i++){
for(int j = 0; j < 3; j++){
gumbi3[i][j] = new JButton();
gumbi3[i][j].setBackground(Color.WHITE);
//gumbi3[i][j].addActionListener(new Poslusalec(gumbi));
gumbi3[i][j].setText("2");
navpicneStevilke.add(gumbi3[i][j]);
}
}
}
}
我是编码的佼佼者,所以我会尽可能地帮助你 谢谢!
答案 0 :(得分:3)
无论如何用空白填充右上角或者在到达CENTER布局结束后停止生成按钮?
没有。这不是BorderLayout的工作方式。
请参阅Using Layout Managers上的Swing教程中的部分。
您需要使用更复杂的布局管理器。我猜你可以使用GridBagLayout
。阅读教程,因为您需要使用各种约束来实现所需的布局。