JButton涵盖了其他按钮

时间:2014-05-23 05:26:49

标签: java swing layout jframe jbutton

我被困在这一段时间了。问题是我想将我的按钮移动到屏幕的右侧,但是当我使用borderlayout.east时它会移除我创建的另一个按钮。任何人都可以解释为什么会这样做,我该如何解决这个问题?

    public static void main(String args[]){
        GUI();

    }


    public static void GUI(){

        handle handle = new handle();
        JButton buy[] = new JButton[8];


        _panel.setLayout(new BorderLayout());


        for(int i = 0; i < buy.length; i++){

            buy[i] = new JButton("Buy");
            _panel.add(buy[i],BorderLayout.EAST);

        }


        _panel.setPreferredSize(new Dimension(600,600));        

        //_panel.add(buy, BorderLayout.EAST);

        _frame.add(_panel);
        _frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        _frame.setLocation(500, 100);
        _frame.setResizable(false);
        _frame.getContentPane();
        _frame.pack();
        _frame.setVisible(true);

    }

}

3 个答案:

答案 0 :(得分:2)

添加到布局会替换其他内容,您可能希望将一个Panel添加到东部,然后将按钮添加到其中,如下所示:

    JPanel subPanel = new JPanel(new FlowLayout());
    _panel.add(supPanel, BorderLayout.EAST);

    for(int i = 0; i < buy.length; i++){

        buy[i] = new JButton("Buy");
        subPanel.add(buy[i]);

    }

答案 1 :(得分:0)

根据#JavaDoc

  

BORDER LAYOUT

     

边框布局布置一个容器,安排并调整其大小   适合五个地区的组成部分:北,南,东,西,和   中央。 每个区域可能包含不超过一个组件,并且是   由相应的常数识别:NORTH,SOUTH,EAST,WEST和   中心。


您要将所有JButtons添加到JPanel以东。

 for(int i = 0; i < buy.length; i++){
        buy[i] = new JButton("Buy");
        _panel.add(buy[i],BorderLayout.EAST);<-------------
    }

所以最后一个只能在东方看到。


那我应该怎么解决呢?

  • 将所有按钮设置为JPanel(例如GridLayout)并将JPanel添加到East或其他JFrame JPanel }}

    例如

    JPanel myPanel=new JPanel();
    myPanel.setLayout(new GridLayout(Button_array.length-1,1))
    for(int i = 0; i < buy.length; i++){
        buy[i] = new JButton("Buy");
        _myPanel.add(buy[i]);
    }
    _panel.add(myPanel,BorderLayout.EAST)
    

答案 2 :(得分:0)

这是一般布局:

General Layout

查看Nested Layout Example了解详情。