如何定位/奠定了组件上的JPanel?(How to position/lay out compon

2019-08-31 11:14发布

我试图在JFrame上放置5个按钮。 四个按钮应该是在第一排和第五个应该是第二排。 但这里所有的按钮出现在一排和第五个按钮的一半是从面板上。 顺便说一句,如果我使用frame.pack(); 我的框架变得比我预期的要小。 我不想改变框的大小。 我想找到第二行中的五分之一。

import java.awt.GridBagLayout;
import java.awt.GridLayout;

import javax.swing.*;


public class test {

    public static void main(String[] args) {


        JFrame frame = new JFrame();
        frame.setBounds(100, 100, 529, 300);
        frame.getContentPane().setLayout(new GridLayout(1, 0, 0, 0));


        JPanel panel = new JPanel();
        frame.getContentPane().add(panel);
        panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));


        JButton btnNewButton_4 = new JButton("New button");
        panel.add(btnNewButton_4);

        JButton btnNewButton_3 = new JButton("New button");
        panel.add(btnNewButton_3);

        JButton btnNewButton = new JButton("New button");
        panel.add(btnNewButton);

        JButton btnNewButton_1 = new JButton("New button");
        panel.add(btnNewButton_1);

        JButton btnNewButton_2 = new JButton("New button");
        panel.add(btnNewButton_2);


        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


    }

}

Answer 1:

四个按钮应该是在第一排和第五个应该是第二排。

  • 关于甲骨文教程标准和预订的例子如何使用布局管理器

  • 使用网格布局(两行)的JPanel的,但所有Jbutton将具有相同的尺寸

  • 使用GridBagLayout的 ,那么每个Jbutton将都会有diferrent大小或不太

  • 隐形JComponents或空的JLabel可以帮助你在最复杂的变化



Answer 2:

您正在使用的BoxLayout,其中组分不会换行(检查API文档: http://docs.oracle.com/javase/6/docs/api/javax/swing/BoxLayout.html )

关于大小,尽量使用panel.setMinimumSize(尺寸d)



Answer 3:

我要做的就是用null作为布局管理器,并放置组件我自己。 经理工作得很好,如果你想在窗口大小或以转播你的组件,你不知道的小应用程序等的最终大小

但大部分是不正确或者在打发时间

而不是仅仅放置在网格上的组件通过使用像素的setBounds(X,Y,宽度,高度); 例:

    JFrame frame = new JFrame();
    frame.setBounds(100, 100, 529, 300);
    frame.getContentPane().setLayout(null);//over ride default
    Container c = frame.getContentPane();


    JButton btnNewButton_4 = new JButton("New button");
    c.add(btnNewButton_4);
    c.seBounds(4,10,40,25);

    JButton btnNewButton_3 = new JButton("New button 3");
    c.add(btnNewButton_3);
    c.seBounds(40,10,40,25);//...etc

样品

  • http://sel2in.com/prjs/aplt/go/Ap1a.html

  • http://sel2in.com/prjs/aplt/go/



Answer 4:

您还可以使用的setBounds(ARG1,ARG2,ARG3,ARG4)方法。 使用此为更好的帮助。 这样做没有布局管理器(绝对定位)



文章来源: How to position/lay out components on JPanel?