我想要的只是一个Label和一个JScrollBar。滚动条甚至不应该有任何功能。我还希望滑块比标签宽一点。
例如:如果标签为10像素宽,则JscrollBar应该为20像素宽。两者都应该居中。
我知道,仅使用preferredSizes或固定大小是不好的。因此,我想避免这种情况,并尝试使用GridBagLayout。

不幸的是我的滚动条无法正常拉伸。到目前为止,这是我的代码。

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);


另外,您也可以玩重物。这也应该扩展滚动条:

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);

09-19 03:06