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

如何根据容器宽度动态设置组件扩展属性

江鹏飞
2023-03-14

我需要建立一个面板,它包含2个内部面板,从左到右排序,有固定的高度和不同的宽度。宽度扩展,或者换句话说,x填充量取决于父容器的宽度。场景是,直到父容器的某个宽度,我只希望右面板填充它所需的水平空间,从该宽度到更大的宽度,只希望左面板展开,依此类推。

我尝试了两种方法--切换两个子面板的GridBagConstraints,或者使用BorderLayout并类似地删除子面板,然后将它们与展开组件的相应BorderLayout.CenterBorderLayout.East(或west)重新添加。此切换将在计算结果宽度间隔时进行,方法是使用componentresized调用,将componentadapter添加到父容器。问题是,调整大小事件不是连续的--例如,我接收到宽度的事件:317、322、330,不一定是中间的所有数字,并且只有在组件调整大小并绘制后才会触发。
当我们看到面板扩展到不应该的宽度时,这会导致非常恼人的闪烁。

共有1个答案

东门涵育
2023-03-14

您可以使用JSplitPane。检查此代码

import java.awt.EventQueue;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JSplitPane;

public class test extends JFrame {

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    test frame = new test();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public test() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);

        JSplitPane splitPane = new JSplitPane();
        setContentPane(splitPane);      
        splitPane.setBorder(null);  

    }

}
 类似资料:
  • 问题内容: 我的元素: 风格: 脚本,使其保持方形: 问题是要在纯CSS中做同样的事情。没有脚本。 问题答案: 我知道有两种技术可以根据元素的高度保持元素的长宽比: 当 高度相对于视口时 : 您可以使用vh单位: 对于 基于父元素的高度的高度 : 您可以使用具有所需纵横比的虚拟图像。宽高比为1:1的示例可以使用1 * 1透明.png图像,也可以使用@vlgalik注释为1 * 1 base64编码

  • 我试图使每个项目的宽度的基础上的内容,但我到目前为止设置的宽度所有的方式可用的空间。我做错了什么? 目标是根据内容大小设置宽度。 目前 https://jsfiddle.net/v6cgLjbd/8/

  • 我需要根据屏幕大小运行不同的行为。所以我有不同类型的屏幕。如果屏幕很小,计算中的变量必须是40。随着它的增长,变量数需要减少。 实例 非常小的屏幕宽度-480 |变量=40 小屏幕宽度-720|变量=30 中等屏幕宽度-1600 |变量=20 大屏幕宽度-2560 |变量=10 这是我的一些代码

  • 我试图制作一个可扩展的小部件(使用ExpansionTile),但我听说有时间让蓝色容器填满行的全部高度。文本的长度是动态的,所以“title”可能跨越几行(我用展开的代码包装了它)。

  • 问题内容: 我有这样的事情: 两个花车都是必需的。我希望内容div填充整个屏幕减去菜单的那些100px。如果我不使用浮点数,div会完全按照它的比例扩展。但是当设置了float时如何设置呢?如果我用…… 然后内容div会获取父级的大小,它是正文或我也尝试过的另一个div,因此,它当然不适合菜单右侧,然后显示在下面。 问题答案: 希望我正确理解了您,看看这个: