Java JFrame内的JPanel布局

Java JFrame内的JPanel布局,java,swing,layout,Java,Swing,Layout,我对Java上的GUI知之甚少,因为我更多的是在后端,而不是在视图端,所以我在Jframe上正确对齐和布局东西时遇到了问题。基本上我想得到这些结果 图像本身已经说明了问题,但是当我运行代码时,我得到的是这个 两端没有填充物,面板正好贴在Jframe的边界上,我想纠正一下,我不想有这样的布局,其中面板的大小与Jframe相同,至少两端会有某种填充物 这是我的代码,这是我框架的构造函数 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

我对Java上的GUI知之甚少,因为我更多的是在后端,而不是在视图端,所以我在Jframe上正确对齐和布局东西时遇到了问题。基本上我想得到这些结果

图像本身已经说明了问题,但是当我运行代码时,我得到的是这个

两端没有填充物,面板正好贴在Jframe的边界上,我想纠正一下,我不想有这样的布局,其中面板的大小与Jframe相同,至少两端会有某种填充物

这是我的代码,这是我框架的构造函数

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    String[] cNames = {"First Name", "Middle Name","Last Name","Status"};
    Object[][] data = {{"John Doe", "John Doe", "John Doe", "Single"},
                       {"Doe John", "Doe John", "Doe John", "Married"}};
    JTable table = new JTable(data, cNames);
    table.setPreferredScrollableViewportSize(new Dimension(500, 70));

    jScrollPane1 = new JScrollPane(table);

    listPahel = new JPanel();
    listPahel.setLayout(new BorderLayout());
    listPahel.add(jScrollPane1, BorderLayout.CENTER);

    add(listPahel);
上面的代码重用到上面的第二个图像中


如果您有任何见解,请务必启发我

最简单的方法是在您的
JPanel上设置边框

listPahel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
  • 向JPanel添加EmptyBorders

  • 将空的JPanel(四个)添加到JFrame的东、西、北、南区域,并将JScrollPane添加到中心区域,然后在中心区域周围的10像素处创建间隙

    然后

  • 将JPanel的LayoutManager包含的JScrollPane从FlowLayout(默认在API中实现)更改为BorderLayout


  • 正是我需要的。。轻松、准确地进行黑客攻击;-)硬编码像素总是有问题的,无论是在边框还是在大小/位置。更好(imo)使用layoutManager,它允许对dpi相关单元进行细粒度控制。。。