gpt4 book ai didi

java - JScrollBar 在 GridBagLayout 中无法正确拉伸(stretch)

转载 作者:行者123 更新时间:2023-12-02 05:27:13 25 4
gpt4 key购买 nike

我想要的只是一个 Label 和下面的 JScrollBar。滚动条甚至不应该有任何功能。我还希望 slider 比标签宽一点。例如:如果标签是 10 像素宽,那么 JscrollBar 应该是 20 像素宽。两者都应该居中。我知道,使用 PreferredSizes 或固定尺寸根本不好。所以我想避免这种情况并尝试使用 GridBagLayout。

不幸的是我的滚动条无法正确拉伸(stretch)。这是到目前为止我的代码。

package kapitel13;

import javax.swing.*;

import java.awt.*;
public class übung7 extends JFrame {
public übung7(String titel) {
super(titel);
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();

JLabel label = new JLabel("Lautstärke"); // means volume
gbc.gridx=2;
gbc.gridy=1;
gbc.gridwidth=3;
//gbc.insets = new Insets(10, 10, 10, 10);
add(label, gbc);

JScrollBar scrollBar = new JScrollBar(JScrollBar.HORIZONTAL);
gbc.gridx=2;
gbc.gridy=2;
gbc.gridwidth=23;
gbc.fill = GridBagConstraints.BOTH;
add(scrollBar, gbc);

/*
JButton btn = new JButton("Button1");
gbc.gridx=3;
gbc.gridy=3;
gbc.weightx=1;
gbc.gridwidth=3;
gbc.fill = GridBagConstraints.BOTH;
add(btn, gbc);
*/
}
public static void main(String[] args) {
übung7 win = new übung7("Win");
win.pack();
win.setVisible(true);
win.setSize(new Dimension(500,500));
}

}

最佳答案

问题是,如果您使滚动条的 gridWidth 更大,它不会变得比标签大,因为标签的左侧或右侧没有任何项目。所有单元格都被压缩为零像素。如果你在里面放一些空标签应该可以:

JLabel label = new JLabel("                            "); 
gbc.gridx=1;
gbc.gridy=1;
gbc.gridwidth=1;
add(label, gbc);


JLabel label2 = new JLabel("Lautstärke"); // means volume
gbc.gridx=2;
gbc.gridy=1;
gbc.gridwidth=1;
add(label2, gbc);


JLabel label3 = new JLabel(" ");
gbc.gridx=3;
gbc.gridy=1;
gbc.gridwidth=1;
add(label3, gbc);


JScrollBar scrollBar = new JScrollBar(JScrollBar.HORIZONTAL);
gbc.gridx=1;
gbc.gridy=2;
gbc.gridwidth=3;
gbc.fill = GridBagConstraints.HORIZONTAL;
add(scrollBar, gbc);

或者,您可以使用权重。这也应该拉伸(stretch)滚动条:

JLabel label2 = new JLabel("Lautstärke"); // means volume
gbc.gridx=2;
gbc.gridy=1;
gbc.gridwidth=1;
gbc.weightx=1;
add(label2, gbc);

JScrollBar scrollBar = new JScrollBar(JScrollBar.HORIZONTAL);
gbc.gridx=1;
gbc.gridy=2;
gbc.gridwidth=3;
gbc.weightx=1;
gbc.fill = GridBagConstraints.HORIZONTAL;
add(scrollBar, gbc);

enter image description here

关于java - JScrollBar 在 GridBagLayout 中无法正确拉伸(stretch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25894638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com