Java 当我用动态元素调整GUI面板的大小时。。这些元素是混乱的

Java 当我用动态元素调整GUI面板的大小时。。这些元素是混乱的,java,swing,layout,jpanel,Java,Swing,Layout,Jpanel,Java:当我用动态元素调整GUI面板的大小时。。这些元素是混乱的 我打开了这个Jpanel。当我调整此窗口的大小时。。 一些动态元素在第二个jpanel中被紧急删除。。为什么会这样 这是一个很长的代码文本,我不知道我要发布什么。。但我可以告诉你: 1:我有一个名为jpBarDetails的GUI jPAnel 2:在该jPAnel中为生成动态组件的公共void 3:我从2个下拉菜单开始选择付款方式。。 选择此方法后,将加载面板PayDetails 所以。。当我调整窗口大小时。。当我仅将窗口

Java:当我用动态元素调整GUI面板的大小时。。这些元素是混乱的

我打开了这个Jpanel。当我调整此窗口的大小时。。 一些动态元素在第二个jpanel中被紧急删除。。为什么会这样

这是一个很长的代码文本,我不知道我要发布什么。。但我可以告诉你:

  • 1:我有一个名为jpBarDetails的GUI jPAnel
  • 2:在该jPAnel中为生成动态组件的公共void
  • 3:我从2个下拉菜单开始选择付款方式。。 选择此方法后,将加载面板PayDetails
所以。。当我调整窗口大小时。。当我仅将窗口大小调整5像素左右时,动态面板panelPayDetails中的所有项目都会被置乱

public void initAfrekenenDisplay() {
          jpBarDetails.removeAll();
               rekeningContant.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                            panelPayDetails.setBounds(245, 10, 360, 275);
                            panelPayDetails.setSize(360, 275);
                            panelPayDetails.setBackground(payDetailColor);
                            panelPayDetails.setBorder(BorderFactory.createEtchedBorder());
                            jpBarDetails.add(panelPayDetails);

                            JLabel lblLidNummerResult = new JLabel("Lidnummer:");
                            lblLidNummerResult.setBounds(10, 175, 200, 20);
                            lblLidNummerResult.setFont(Applicatie.FONT_12_BOLD);
                            panelPayDetails.add(lblLidNummerResult);

                            final JTextField jtfLidNummerResult = new JTextField();
                            jtfLidNummerResult.setBounds(180, 175, 130, 20);
                            jtfLidNummerResult.enable(false);
                            jtfLidNummerResult.setBackground(verLightGray);
                            panelPayDetails.add(jtfLidNummerResult);

                            JLabel lblLidNaamResult = new JLabel("Naam:");
                            lblLidNaamResult.setBounds(10, 197, 200, 20);
                            lblLidNaamResult.setFont(Applicatie.FONT_12_BOLD);
                            panelPayDetails.add(lblLidNaamResult);

                            final JTextField jtfLidNaamResult = new JTextField();
                            jtfLidNaamResult.setBounds(180, 197, 130, 20);
                            jtfLidNaamResult.enable(false);
                            jtfLidNaamResult.setBackground(verLightGray);
                            panelPayDetails.add(jtfLidNaamResult);

                            JLabel lblLidGeboortedatumResult = new                               JLabel("Geboortedatum:");
                            lblLidGeboortedatumResult.setBounds(10, 220, 200, 20);
                            lblLidGeboortedatumResult.setFont(Applicatie.FONT_12_BOLD);
                            panelPayDetails.add(lblLidGeboortedatumResult);
                }
            });
   }

您需要了解Java的布局管理

您可以将组件绝对定位,也可以在布局中设置布局,以便在调整窗口大小时进行补偿

另外,您应该考虑到GUI也会受到操作系统设置的影响(例如Cype VIEW vs Windows 7),以及实际的OS+窗口管理器。 你不应该相信在你的系统上看起来正常的人会在另一个操作系统中出现

一些有用的链接:


如果我们能看到一个最小的失败代码示例,可能会更容易提供帮助。其中“may”==“will”。我会在@marounnaroun所花时间的1/2内读懂你的心思,但我要花更多的钱;-)不过说真的,你需要发布一个
SSCCE
来说明你的问题。如果你放一些代码就好了。不要使用空布局!!!不要使用setBounds()方法定位/调整组件的大小,这是布局管理器的工作。如果使用适当的布局管理器,组件的重新对齐/大小调整将自动进行。此外,您发布的代码不是
SSCCE
,因此我们无法给出任何具体建议。将代码更改为使用布局管理器,然后在仍然存在问题时发布SSCCE。永远不要手动调整大小/定位:这是合适的布局管理器的专有任务