Java 带有滚动箭头但没有滚动条的JScrollPane

Java 带有滚动箭头但没有滚动条的JScrollPane,java,swing,jscrollpane,custom-component,jscrollbar,Java,Swing,Jscrollpane,Custom Component,Jscrollbar,我想在这张图片上创建如下滚动窗格: 组件侧面带有箭头,并且没有可见的滚动条。只需要水平滚动。可以用JScrollPane完成吗 您可以通过使用滚动窗格和创建使用滚动条操作的按钮来创建自己的组件: import java.awt.*; import javax.swing.*; import javax.swing.plaf.basic.*; public class ScrollPaneSSCCE extends JPanel { public ScrollPaneSSCCE()

我想在这张图片上创建如下滚动窗格:


组件侧面带有箭头,并且没有可见的滚动条。只需要水平滚动。可以用JScrollPane完成吗

您可以通过使用滚动窗格和创建使用滚动条操作的按钮来创建自己的组件:

import java.awt.*;
import javax.swing.*;
import javax.swing.plaf.basic.*;

public class ScrollPaneSSCCE extends JPanel
{
    public ScrollPaneSSCCE()
    {
        setLayout( new BorderLayout() );

        JTextArea textArea = new JTextArea(1, 80);
        textArea.setText("Hopefully this will answer your question");
        JScrollPane scrollPane = new JScrollPane( textArea );
        scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        add(scrollPane);

        JScrollBar horizontal = scrollPane.getHorizontalScrollBar();

        BasicArrowButton west = new BasicArrowButton(BasicArrowButton.WEST);
        west.setAction( new ActionMapAction("", horizontal, "negativeUnitIncrement") );
        add(west, BorderLayout.WEST);

        BasicArrowButton east = new BasicArrowButton(BasicArrowButton.EAST);
        east.setAction( new ActionMapAction("", horizontal, "positiveUnitIncrement") );
        add(east, BorderLayout.EAST);
    }

    private static void createAndShowUI()
    {
        JFrame frame = new JFrame("ScrollPaneSSCCE");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new ScrollPaneSSCCE(), BorderLayout.NORTH);
        frame.setSize(100, 100);
        frame.setLocationByPlatform( true );
        frame.setVisible( true );
    }

    public static void main(String[] args)
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                createAndShowUI();
            }
        });
    }
}

您还需要使用该课程。

效果很好,谢谢!小问题:当没有可滚动的内容时(整个内容适合屏幕),如何使这些按钮不可见?将ComponentListener添加到scrollPane并侦听ComponentResistized()方法。然后检查添加到滚动窗格的组件的首选大小和滚动窗格的大小。当首选大小较大时,显示按钮,否则隐藏按钮。