当前位置: 首页 > 知识库问答 >
问题:

此设计使用什么布局管理器

彭海阳
2023-03-14

有很多布局管理器,这有点让人不知所措,我不知道使用什么布局管理器来显示bg图像(BackgroundFrame.java)顶部和左侧的左面板(lerframe.java)。我不知道如何进一步描述它,但为了清楚地解释我的困境,我在下面提供了一个说明。

除此之外,我还包括了我的部分代码

背景框架。Java语言

Public class BackgroundFrame extends JPanel {
    ImageIcon img;
    BufferedImage bufferedImage;
    
    public BackgroundFrame() {
   
        
    try {
    bufferedImage = ImageIO.read(new File("bgpic.png"));
    img = new ImageIcon(bufferedImage);
    JLabel bg = new JLabel(img);
    bg.setSize(500, 500);
    add(bg);
    
    } catch (IOException e) {
        System.out.println("Error");
        //to check if image is showing
}
        /*
    BufferedImage bufferedImage = ImageIO.read(new File("bg.png"));
    img = new ImageIcon("bgpic.png");
    JLabel bg = new JLabel(img);
    bg.setSize(500, 500);
    add(bg);
    */
   
    }
    
}

大型机。Java语言

public class MainFrame extends JFrame {
    
    LeftFrame lf;
    RightFrame rf;
    BackgroundFrame bg;
    
    public MainFrame() {
        
        super("Layout");
        
        lf = new LeftFrame();
        //lf.setLayout(new FlowLayout(FlowLayout.LEFT));
        //add(lf, BorderLayout.WEST);
        lf.add(this, BorderLayout.WEST);
        
        rf = new RightFrame();
        //rf.setLayout(new FlowLayout(FlowLayout.RIGHT));
        //add(rf, BorderLayout.PAGE_START);
        rf.add(this, BorderLayout.EAST);
        
        bg = new BackgroundFrame();
        add(bg, BorderLayout.CENTER);
        //bg.add(this, BorderLayout.CENTER);
        
        setSize(5000,5000);
    setVisible(true);
    this.pack();
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }       
     
   
    
    public static void main(String[] args) {
        new MainFrame();
    }
    
}

左撇子rame.java

public class LeftFrame extends JPanel {
    LeftFrame lf;
    TextArea tarea;
    
    public LeftFrame() {
    
       
        tarea = new TextArea();
        add(lf, tarea);
        
        /*
        this.setBackground(Color.WHITE);
        this.setSize(100, 100);
        */
    //lf.setLayout(new FlowLayout(FlowLayout.LEFT));
    
    }
}

共有1个答案

陈誉
2023-03-14

我使用了BorderLayout. CENTER for the Background Frame.java但我不确定左面板和右面板使用什么布局。

您的背景图像应该由添加到内容窗格下方框架的LayeredPane中的JLabel显示(参见https://docs.oracle.com/javase/tutorial/uiswing/components/toplevel.html)。

要在网格中定位四个面板,请使用JFrame内容窗格上的GridLayout,其中包含2列和2行(参见https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html#grid)。将面板添加到JFrame或JFrame.getContentPane()。

四个面板的布局管理器取决于您希望在其中显示的内容。

 类似资料:
  • 我试图使用创建一个厨房显示系统,并试图找出一种方法,当第一行已经满了时,在第二行添加另一个面板。GUI的宽度将根据用户的喜好而改变。当更宽时,它应该每行显示更多的组件。

  • 在一个GUI程序里,布局是一个很重要的方面。布局就是如何管理应用中的元素和窗口。有两种方式可以搞定:绝对定位和PyQt5的layout类 绝对定位 每个程序都是以像素为单位区分元素的位置,衡量元素的大小。所以我们完全可以使用绝对定位搞定每个元素和窗口的位置。但是这也有局限性: 元素不会随着我们更改窗口的位置和大小而变化。 不能适用于不同的平台和不同分辨率的显示器 更改应用字体大小会破坏布局 如果我

  • 在一个 GUI 程序里,布局是一个很重要的方面。布局就是如何管理应用中的元素和窗口。有两种方式可以搞定:绝对定位和 PyQt5 的 layout 类 绝对定位 每个程序都是以像素为单位区分元素的位置,衡量元素的大小。所以我们完全可以使用绝对定位搞定每个元素和窗口的位置。但是这也有局限性: 元素不会随着我们更改窗口的位置和大小而变化。 不能适用于不同的平台和不同分辨率的显示器 更改应用字体大小会破坏

  • *label1:combo1 label2:combo2 label3:combo3 label4:text1 label5:text2 label6:text3*

  • 我需要在中制作这样的表。 有什么想法如何做到这一点,以获得像下面图片上的布局吗?

  • 在项目中,我们通常都会有布局组件的概念,常见的场景是整个项目通用的头尾,侧边栏,以及整体布局结构等,这些布局内容被抽象成组件,包含一些布局样式,用于组合其它组件搭建成页面。 说白了,其实它本质上还是一种组件,将布局样式抽象成组件,能够保持子组件和父组件的独立性,不用在其中关联到布局信息。 如我们的样例项目中的 MainLayout.jsx: // ./components/MainLayout/M