使用BorderLayout填充java中的角点

时间:2014-12-26 16:48:58

标签: java

我正在尝试在边框布局的中心和侧面创建一个带按钮的窗口,但是布局北侧的按钮通过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]);
            }
        }   

    }
}

我是编码的佼佼者,所以我会尽可能地帮助你 谢谢!

1 个答案:

答案 0 :(得分:3)

  

无论如何用空白填充右上角或者在到达CENTER布局结束后停止生成按钮?

没有。这不是BorderLayout的工作方式。

请参阅Using Layout Managers上的Swing教程中的部分。

您需要使用更复杂的布局管理器。我猜你可以使用GridBagLayout。阅读教程,因为您需要使用各种约束来实现所需的布局。