【问题标题】:How to set two panels in east of frame如何在框架的东边设置两个面板
【发布时间】:2013-11-19 13:02:02
【问题描述】:

这样,

如何在框架的东边设置两个面板并保持面板一和二的固定尺寸?

如何设置帧的图像BG?

【问题讨论】:

    标签: java swing layout jframe jpanel


    【解决方案1】:

    通过嵌套布局。在您的BoarderLayoutEAST 上添加BoxLayout。请参阅 Andrew Thompson 回复this question

    【讨论】:

      【解决方案2】:

      如果您不介意手动修改,您可以使用 SpringLayout 手动控制布局。使用这种方法,我根据您的图片制作了一个小模型。看看它是否有帮助。如果你也使用注释掉的行(替换它上面的行)它应该保持大小相同

      public class SO{
          public static void main(String[] args) {
          JFrame frame = new JFrame();
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          JPanel panel1 = new JPanel();
          panel1.setBackground(java.awt.Color.RED);
      
          JPanel panel2 = new JPanel();
          JButton but1 = new JButton("Button 1");
          JButton but2 = new JButton("Button 2");
          panel2.setBackground(java.awt.Color.BLUE);
          panel2.add(but1);
          panel2.add(but2);
      
          SpringLayout layout = new SpringLayout();
          frame.setLayout(layout);
      
          frame.add(panel1);
          layout.putConstraint(SpringLayout.EAST, panel1, -5, SpringLayout.EAST, frame.getContentPane());
          layout.putConstraint(SpringLayout.WEST, panel1, -200, SpringLayout.EAST, frame.getContentPane());
          layout.putConstraint(SpringLayout.NORTH, panel1, 5, SpringLayout.NORTH, frame.getContentPane());
          layout.putConstraint(SpringLayout.SOUTH, panel1, -5, SpringLayout.NORTH, panel2);
          //layout.putConstraint(SpringLayout.SOUTH, panel1, 200, SpringLayout.NORTH, frame.getContentPane()); swap this for the above one to keep the sizes the same
      
          frame.add(panel2);
          layout.putConstraint(SpringLayout.EAST, panel2, -5, SpringLayout.EAST, frame.getContentPane());
          layout.putConstraint(SpringLayout.WEST, panel2, -200, SpringLayout.EAST, frame.getContentPane());
          layout.putConstraint(SpringLayout.NORTH, panel2, -100, SpringLayout.SOUTH, frame.getContentPane());
          layout.putConstraint(SpringLayout.SOUTH, panel2, -5, SpringLayout.SOUTH, frame.getContentPane());
      
          frame.setSize(400, 350);
          frame.setVisible(true);
         }
      }
      

      祝你好运!

      【讨论】:

        【解决方案3】:

        你要做的是:

        • 制作一个新面板(在本例中称为 outerPanel)
        • 将您想要的 2 个面板添加到此外面板
        • 然后将此外部面板添加到框架中

        【讨论】:

          猜你喜欢
          • 2018-03-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-03
          • 2014-05-01
          • 2020-02-05
          相关资源
          最近更新 更多