I want to create scrollpane like on this picture:
With arrows on component sides and with no scrollbar visible. Only horizontal scrolling is needed. Can It be done with JScrollPane?
You can make you own component by using a scrollpane and by creating your own buttons that will use the Actions of the scrollbar:
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();
}
});
}
}
You will also need to use the Action Map Action class.