标签: boxlayout

如何在kivy中更改BoxLayout的顺序?

我正在测试kivy,我想创建一个BoxLayout,以便堆叠一些按钮.我的问题是添加到布局中的子项遵循底层逻辑,而我想要相反.你知道我怎么能改变订单?谢谢!

python layout python-2.7 boxlayout kivy

3
推荐指数
1
解决办法
1428
查看次数

Java:jsplitpane和boxlayout的问题

我想摆脱jsplitpanes左边的空白区域:

截图

这是我的代码:

getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));

JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
splitPane.add(downloadsPanel);
splitPane.add(filesPanel);

JSplitPane splitPane2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
splitPane2.add(processingPanel);
splitPane2.add(messagePanel);

JSplitPane splitPane3 = new JSplitPane(JSplitPane.VERTICAL_SPLIT);

splitPane3.add(splitPane);
splitPane3.add(splitPane2);

getContentPane().add(addPanel);
getContentPane().add(splitPane3);
Run Code Online (Sandbox Code Playgroud)

java swing jsplitpane boxlayout

2
推荐指数
1
解决办法
975
查看次数

从 BoxLayout 中移除时组件不会移动

我正在使用 BoxLayout 并动态地从中删除组件,如下所示:

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {

        @Override
        public void run() {
            final JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));
            final JLabel l = new JLabel("remove");
            frame.add(l);
            frame.add(new JLabel("Hello2"));
            frame.add(new JLabel("Hello3"));
            frame.pack();
            frame.setVisible(true);

            new Thread() {
                public void run() {
                    Utils.sleep(1000);
                    SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            frame.remove(l);
                            frame.repaint();
                        }
                    });
                }
            }.start();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

但是,这样做时,即使有问题的标签已从布局中删除,其他组件也不会向上移动以覆盖其空间,直到我调整框架大小。我尝试在移除组件后重新绘制框架,但没有运气 - 标签不再显示,但仍然存在原来的间隙。

除了每次删除组件时自动调整窗口大小的明显可怕的困境之外,我如何获得所需的行为?

java swing boxlayout

2
推荐指数
1
解决办法
1253
查看次数

如何防止Boxlayout/Box拉伸儿童组件?

正如您在下面的可运行代码中所看到的,我尝试使用具有可扩展子框的Box.儿童盒可以改变它们的大小,这一切都很好.主要问题是大小始终相对于父级.但我希望它们具有特定的大小,以防万一没有地方使用JScrollPane.目前他们只收缩其他儿童盒子.

我尝试了Glue和Filler,但它没有用.胶水没有任何效果,填料具有副作用,始终保持一定的位置(即使ScrollPane正在运行).拥有如此多的自由空间是非常难看的.

所以,你知道防止盒子伸展孩子的好方法吗?

先感谢您!

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.TitledBorder;


public class ExpandableMenueDemo {
    Box allBoxes; 
    ExpandableMenueDemo(){
        allBoxes = Box.createVerticalBox();

        TitledBorder title;
        title = BorderFactory.createTitledBorder("Filter");
        allBoxes.setBorder(title);

        for (int i = 0 ;i<3;i++){
            //generate collapsable components
            SubBox b = new SubBox("SubBox"+i);
            allBoxes.add(b.getSwingBox());

        }
        allBoxes.add(Box.createVerticalGlue());
    }

    public Container getMenue(){
        return allBoxes;
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        ExpandableMenueDemo …
Run Code Online (Sandbox Code Playgroud)

java swing boxlayout

2
推荐指数
1
解决办法
3973
查看次数

是否可以动态地将组件添加到BoxLayout的中间

我正在构建一个小型的swing应用程序,我在其中创建了与BoxLayout对齐的内容窗格,并为其添加了另外2个JPanel.到现在为止还挺好.

现在我偶然发现了一个问题,我必须重新创建第一个JPanel并将其添加到其他两个JPanel的中间.

可能会有多个事件,其中另一个面板添加到布局中,所以我希望它会适当扩展.

结论:我正在寻找的是将组件添加到BoxLayout,并选择在最后一个组件之前添加它们.

谢谢.

java swing layout-manager boxlayout

2
推荐指数
1
解决办法
551
查看次数

如何将jPanel中的所有jPanel对齐到左边?

嘿,我正在尝试将面板内的所有面板对齐到较大面板的左侧.

这是我目前面临的情况:

箱面板布局

对于主面板(包含所有其他面板的面板 - 我将其称为主面板!)我在创建它时使用以下代码:

    JPanel panel = new JPanel();
    panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
Run Code Online (Sandbox Code Playgroud)

对于其中的每个面板,我也使用BoxLayout,但我在每个面板上尝试了[jpanel] .setAlignmentX(Component.LEFT_ALIGNMENT)之类的东西,但这似乎不起作用.

任何帮助,将不胜感激!

:)

编辑:对于"盒子尺寸(m):"标签,有没有办法将它对齐到它所包含的面板顶部?它在自己的一个小组中.

编辑:修复后:

JPanel问题一旦修复

以下解决方案,谢谢大家的帮助:)

java swing jpanel layout-manager boxlayout

2
推荐指数
1
解决办法
3811
查看次数

JTextField 拉伸以填充 BoxLayout.PAGE_AXIS

我已将 a 添加JTextFieldJPanel正在使用的BoxLayout.PAGE_AXIS.

然后我将此面板添加到BorderLayout.CENTER.

现在我的文本字段正在拉伸BorderLayout.CENTER.

有没有办法在不使用空布局的情况下设置此文本字段的宽度和高度?或者只是以某种方式使它不拉伸整个宽度和高度BorderLayout.CENTER

我看到有 aJTextField.setMaximumSize(Dimension arg0);但我不确定 aDimension是什么,或者如何在这种情况下使用它。

java swing layout-manager border-layout boxlayout

2
推荐指数
1
解决办法
764
查看次数

当我用另一个面板包裹面板时,为什么胶水会消失?

这是我试过的:

JPanel p1 = new JPanel();
BoxLayout b1 = new BoxLayout(p1, BoxLayout.X_AXIS);
p1.setLayout(b1);
p1.add(new JButton("1"));
p1.add(Box.createHorizontalGlue());
p1.add(new JButton("1"));
Run Code Online (Sandbox Code Playgroud)

它工作得很好.按钮位于左侧和右侧

在此输入图像描述

但如果我把它包装成JPanelFlowLayout胶水管理消失.

//Flow Layout
JPanel jp = new JPanel();

//Box Layout
JPanel p1 = new JPanel();
BoxLayout b1 = new BoxLayout(p1, BoxLayout.X_AXIS);
p1.setLayout(b1);
p1.add(new JButton("1"));
p1.add(Box.createHorizontalGlue());
p1.add(new JButton("1"));

//put it into a JPanel with FlowLayout
jp.add(p1);
panel.add(jp);
Run Code Online (Sandbox Code Playgroud)

为什么?我认为胶水就像任何其他组件一样,所以它不应该消失.这是它的样子:

在此输入图像描述

不能有人解释一下吗?需要注意的是,如果我把它变成一个JPanelBoxLayout它的罚款.

java swing layout-manager boxlayout

2
推荐指数
1
解决办法
27
查看次数

BoxLayout显示不正确

我正在尝试创建一个非常简单的应用程序,它在状态栏面板上方有一个JSplitPane(分为JTabbedPane和JPanel).我想使用一个简单的布局(即BoxLayout,FlowLayout或BorderLayout),但我已经尝试了,他们都给了我同样的错误.我尽可能地简化了代码以显示错误.

错误是主框布局(框架)中应该只有2个区域:顶部(带有黑色边框的JSplitPane)和底部(带有JPanel状态栏).但是,当我添加状态栏时,左上角创建的第三个区域不包含任何内容.关于如何摆脱它的任何想法?

public static void main(String[] args) {
    JFrame frame = new JFrame("Application");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));

    // Create left side of the application
    JTabbedPane tabby = new JTabbedPane(JTabbedPane.LEFT);

    // Create right side of the application
    JPanel rightPanel = new JPanel(new BorderLayout());

    // Create the status bar at the bottom
    JPanel statusBar = new JPanel(new BorderLayout());
    JPanel statusBarPanel = new JPanel();
    statusBarLabel = new JLabel("Status Bar");
    statusBarPanel.add(statusBarLabel);
    parent.add(statusBarPanel);

    JSplitPane mainPain = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, tabby, rightPanel);
    frame.add(mainPain);
    frame.add(statusBar);
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true); 
Run Code Online (Sandbox Code Playgroud)

申请3段.

java swing layout-manager boxlayout

1
推荐指数
1
解决办法
57
查看次数

BorderLayout不尊重maximumsize

我有一个问题BorderLayout,但首先,这是我的GUI设置:

在此输入图像描述

如你所见,我内部有3个不同的组件JFrame.添加JMenuJList工作正常.但我JPanel应该有一个固定的大小,所以我想阻止我BorderLayout拉伸面板.我尝试了一切,setPreferredSize() setMinimumSize() setMaximumSize() setSize()但布局再次拉伸我的面板以适应框架.(使用面板添加到框架中BorderLayout.CENTER).

有没有办法阻止这个或你有其他建议来管理这个问题?

java layout swing layout-manager boxlayout

1
推荐指数
1
解决办法
207
查看次数

使用BoxLayout动态增长JPanel(在空布局上)

我有一个JPanel,在JPanel顶部有一个垂直BoxLayout,其布局为null.

我希望带有BoxLayout的JPanel随着组件的添加而增长.

看到这段代码:

public static void main (String[] args) {
    JFrame f = new JFrame();
    f.setSize(500,500);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel total = new JPanel();
    total.setLayout(null);
    total.setSize(f.getWidth(),f.getHeight());
    total.setBackground(Color.green);
    JPanel box = new JPanel();
    box.setLocation(100,200);
    box.setLayout(new BoxLayout(box, BoxLayout.Y_AXIS));
    box.add(new JButton("test"));
    box.add(new JLabel("hey"));
    total.add(box);
    f.add(total);
    f.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)

您会注意到没有任何组件出现.

如何添加更多组件(垂直添加)时,如何使JPanel"框"大小动态增加.

提前:我需要"盒子"的位置正好是100,200所以请不要建议我不使用空布局.我必须使用null布局."total"的null布局不应影响我的问题的答案,该问题集中在"box"面板上.

java swing jpanel absolutelayout boxlayout

0
推荐指数
2
解决办法
3261
查看次数

使用BoxLayout时,JPanel不会调整大小

我有一个JPanel并设置如下:

JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
Run Code Online (Sandbox Code Playgroud)

然后我添加一个JTextField占用整个面板的:

JTextField field = new JTextField();
panel.add(field);
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试调整它的大小时:

panel.setPreferredSize(new Dimension(20,400));
Run Code Online (Sandbox Code Playgroud)

什么都没发生.为什么?我正在使用BoxLayout以便将我JLabelJTextField组件按垂直顺序排列.如果无法调整面板的大小,我是否可以至少调整大小JTextField以使其不占用整个空间?

例:

import java.awt.Dimension;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class GUI extends JFrame 
{
    public GUI() {
        JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
        panel.setPreferredSize(new Dimension(20,400));
        JTextField field1 = new JTextField();
        JTextField field2 = new JTextField();
        panel.add(field1);
        panel.add(field2);
    }
}
Run Code Online (Sandbox Code Playgroud)

java swing layout-manager boxlayout

0
推荐指数
1
解决办法
1260
查看次数