java - 尝试使用 GridLayout 向 JPanel 添加滚动条,但 JCheckBoxes 只是变小了

标签 java swing user-interface jscrollpane

所以我正在尝试在 Java 中设置一个 Gui,它包含一个复选框列表。决定列表长度的是突出显示的复选框。但是,当我向列表中添加更多内容时,复选框会变小以适合面板。我已经添加了一个垂直滚动条,但这并没有做任何事情。我必须做些什么来阻止 GridLayout 调整它所持有的内容的大小还是错误的布局?

   package darrt;

import java.awt.BorderLayout;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class TestForScrollBat {

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

        JFrame frame = new JFrame();
        JPanel panel = new JPanel(new GridLayout(0, 1));
        JScrollPane scrollPane = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

        scrollPane.setBounds(50, 30, 300, 50);
        frame.getContentPane().add(scrollPane, BorderLayout.CENTER);

        JLabel label = new JLabel("           Soc Categories");

        JCheckBox soc1 = new JCheckBox("Blood and Lymphatic System Disorder");
        JCheckBox soc2 = new JCheckBox("Cardiac Disorders");
        JCheckBox soc3 = new JCheckBox("Congenital, familial and Genetic Disorders");
        JButton jbtn = new JButton("Go!");
        panel.add(label);
        panel.add(soc1);
        panel.add(soc2);
        panel.add(soc3);
        panel.add(jbtn);
        frame.add(panel);

        frame.pack();


      frame.setVisible(true);
    }
}

我以前有它,所以它会向这个面板添加一个滚动条,但现在它甚至没有这样做..它只是在 JFrame 上创建一个新的 JPanel

最佳答案

您的问题与代码中的以下几行有关:

scrollPane.setBounds(50, 30, 300, 50);

在使用布局时,您不应该设置静态大小和位置。您在将 scrollPane 添加到 contentPanecenter 之前告诉它特定的大小和位置。这两者是冲突的。

下一个问题是关于这一行的:

frame.add(panel);

此行将从您的 JScrollPane 中分离出 panel 并将其直接添加到 JFramecontentPane .

通过删除/注释这些行,您的问题将得到解决。

关于java - 尝试使用 GridLayout 向 JPanel 添加滚动条,但 JCheckBoxes 只是变小了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34765297/

相关文章:

java - 如何使用java启动服务器?

java - 为什么这个方法是静态的?

java - 在java中将一个jlist中的选定项目显示到另一个jlist中

java - 在 JFrame 中使用 Darcula LAF

python - 绘制透明并单击所有窗口顶部的文本

android - 如何通过 XML 布局显示 Android UI?

java - s3 hadoop错误:NoSuchMethodError:org.apache.hadoop.metrics2.lib.MetricsRegistry.newCounter

java - JToolBar始终 float

user-interface - 如何检测 XControl 是否可见?

java - JVM 或底层操作系统是否处理线程状态更改