JSplitPane 中的 Java JScrollPane 不起作用

标签 java awt

我有这段代码,我想为 CanvasBoard 添加滚动条,但它不显示滚动条。 CanvasBoard 和 PointCanvas 扩展了 JPanel。

公共(public)类主要{

    public static void main(String[] args) {
        JFrame frame = new JFrame("Sample");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel cb = new JPanel();

        JScrollPane scrollPane = new JScrollPane(cb);

        scrollPane.setPreferredSize(new Dimension(2000, 600));

        JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, scrollPane,
                new JPanel());

        splitPane.setOneTouchExpandable(true);
        splitPane.setDividerLocation(150);

        Dimension minimumSize = new Dimension(600, 600);
        cb.setMinimumSize(minimumSize);

        frame.add(splitPane);

        frame.setSize(1200, 600);
        frame.setVisible(true);

    }

你知道为什么吗?谢谢!

最佳答案

JScrollPane 的默认设置是在需要时显示滚动条。

我在您的示例中更改了一些内容,并添加了命令以使滚动条可见。

这是您的 Swing 布局。

Sample

这是修改后的代码。

package com.ggl.testing;

import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.SwingUtilities;

public class ScrollPaneTest implements Runnable {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new ScrollPaneTest());
    }

    @Override
    public void run() {
        JFrame frame = new JFrame("Sample");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel cb = new JPanel();

        JScrollPane scrollPane = new JScrollPane(cb);
        scrollPane
                .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        scrollPane
                .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        scrollPane.setPreferredSize(new Dimension(2000, 600));

        JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
                scrollPane, new JPanel());

        splitPane.setOneTouchExpandable(true);
        splitPane.setDividerLocation(150);

        Dimension minimumSize = new Dimension(600, 600);
        cb.setMinimumSize(minimumSize);

        frame.add(splitPane);

        frame.setSize(1200, 600);
        frame.setVisible(true);
    }

}

关于JSplitPane 中的 Java JScrollPane 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27863092/

相关文章:

java - spring @GetMapping 是否与 MockMvc 一起工作

java - Java中ArrayList与SQLite的ArrayList请教

java - 获取队列中最大号码位置的方法

java swing,main方法中必要的调用

java - NetBeans 的 HintsController 和 EventQueue

java - 登月游戏。控件不起作用

java - picasso :无法识别的 HTTP 方案请求类型

java - 亚马逊网络爬虫获取span-Element

java - 如何在paint()方法之外的小程序中打印

java - 我该如何填充连接 3 个点形成的三角形