当前位置: 首页 > 面试题库 >

如何将两个jpanels并排放置

艾俊悟
2023-03-14
问题内容

我尝试将两个jpanel并排放置,但是在这一刻,我无法执行我想要的代码,

this.videoPanel= new JPanel();
this.videoPanel.setBackground(new Color(102, 102, 102));
this.videoPanel.setPreferredSize(new Dimension(320, 240));
this.videoPanel.setLayout(new BoxLayout(this.videoPanel, 1));

GroupLayout layout = new GroupLayout(getContentPane());
getContentPane().setLayout(layout);

layout.setHorizontalGroup(
        layout.createSequentialGroup()
        .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
        .addComponent(this.videoPanel, 10, 400, 500)));

layout.setVerticalGroup(
        layout.createSequentialGroup()
        .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
        .addComponent(this.videoPanel, 10, 400, 500)));

pack();

`我尝试再放一个jpanel:

 this.videoPanel1.setBackground(new Color(102, 102, 102));
 this.videoPanel1.setPreferredSize(new Dimension(320, 240));
 this.videoPanel1.setLayout(new BoxLayout(this.videoPanel1, 2));

 GroupLayout layout = new GroupLayout(getContentPane());
 getContentPane().setLayout(layout);



 layout.setHorizontalGroup(
         layout.createSequentialGroup()
         .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
         .addComponent(this.videoPanel1, 10, 400, 500)
         .addComponent(this.videoPanel, 10, 400, 500)));

 layout.setVerticalGroup(
         layout.createSequentialGroup()
         .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
         .addComponent(this.videoPanel1, 10, 400, 500)
         .addComponent(this.videoPanel, 10, 400, 500)));
      pack();

此代码无效,也不会出错。


问题答案:

如果我正确理解了您的问题,则希望并排放置2个JPanel。查看布局GridLayout。

您需要setLayout(new GridLayout(1,2)); 上面写着1 Row,2 Col

package SSCCE;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class SideBYSide extends JFrame{

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

    public SideBYSide(){
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(100, 75);
        this.setLayout(new BorderLayout());
        this.setVisible(true);

        JPanel container = new JPanel();
        JPanel panelOne = new JPanel();
        JPanel panelTwo = new JPanel();

        panelOne.add(new JLabel("1"));
        panelTwo.add(new JLabel("2"));

        container.setLayout(new GridLayout(1,2));
        container.add(panelOne);
        container.add(panelTwo);

        this.add(container);
    }

 }


 类似资料:
  • 问题内容: 我有一个设置100%宽度的主包装div。在里面,我想有两个div,一个是固定宽度的,另一个是填充其余空间的。我如何浮动第二个div来填充其余的空间。谢谢你的帮助。 问题答案: 有很多方法可以满足您的要求: 使用CSS 属性:

  • 问题内容: 我有两个未嵌套的div,一个在另一个之下。它们都在一个父div内,并且该父div重复其自身。所以本质上: 我想每对以及彼此相邻。我怎样才能做到这一点? 问题答案:

  • 问题是== 将nums1和nums2合并到一个按非递减顺序排序的数组中。 最终排序的数组不应由函数返回,而应存储在数组 nums1 中。为了适应这种情况,nums1 的长度为 m n,其中前 m 个元素表示应合并的元素,最后 n 个元素设置为 0 并应忽略。nums2 的长度为 n。 我的代码中有什么错误??? 您的意见 我的产出 预期产出

  • 我试图使用GridBagLayout将两个JPanel放置到一个JFrame上。第一个JPanel使用gridLayout创建35列和27行JButtons,宽度应该是JFrame的3/4。此面板需要填充其可用的垂直空间。第二个JPanel也使用gridLayout,应该填充主JFrame的最后1/4。 不幸的是,我的第一个JPanel(sPan)甚至不适合屏幕,并迫使整个第二个JPanel(cP

  • 问题内容: 我想要一个表将显示一半的行,然后环绕并水平包装并显示另一半行,而不是一个长的垂直表。 我正在使用角度数据,希望能够将一个数据数组绑定到一张表,但是要像描述的那样将其水平跨两个部分。两个表是一个选项,但是这意味着我必须添加更多逻辑,如果可能的话,我希望避免使用。即,对于排序ID,必须先将数据集重新连接在一起并对其进行排序,然后再进行拆分。 任何指针表示赞赏。 问题答案: 您可以尝试使用C

  • 问题内容: 这是在采访中问我的,这是我提供的解决方案: 有没有更有效的方法可以做到这一点? 编辑:更正的长度方法。 问题答案: 稍有改进,但是在主循环之后,当到达另一个输入数组的末尾时,可以用来复制其中一个输入数组的结尾。但是,那不会改变你解决方案的性能特征。