如何隐藏JScrollBar中的箭头按钮

我需要在AWT应用程序中隐藏java.awt.Scrollbar(VERTICAL)的箭头按钮。 有谁知道如何实现这一目标?

我在这里看到了一个例子,但代码只是隐藏了按钮。 按钮的空置空间仍然存在; 它没有被滚动条占用。

更确切地说,这是我应该实现的截图。 我不确定去哪个方向。

更新:我一直在寻找AWT的解决方案。 但现在我也对Swing的建议持开放态度。

期望的效果

试试这个..它用垂直ScrollBar上的常规按钮替换大小为0x0的按钮。

它确实限制了你的外观和感觉:(

 JScrollPane scroller = new JScrollPane(mainPane); scroller.setPreferredSize(new Dimension(200,200)); // ... etc scroller.getVerticalScrollBar().setUI(new BasicScrollBarUI() { @Override protected JButton createDecreaseButton(int orientation) { return createZeroButton(); } @Override protected JButton createIncreaseButton(int orientation) { return createZeroButton(); } private JButton createZeroButton() { JButton jbutton = new JButton(); jbutton.setPreferredSize(new Dimension(0, 0)); jbutton.setMinimumSize(new Dimension(0, 0)); jbutton.setMaximumSize(new Dimension(0, 0)); return jbutton; } }); 

更新:抱歉,这是一个解决方案

使用Nimbus外观和感觉您可以使用它来删除箭头按钮:

  UIManager.getLookAndFeelDefaults().put( "ScrollBar:\"ScrollBar.button\".size", 0); UIManager.getLookAndFeelDefaults().put( "ScrollBar.decrementButtonGap", 0); UIManager.getLookAndFeelDefaults().put( "ScrollBar.incrementButtonGap", 0); 

这是一个完整的例子:

在此处输入图像描述

 public class ScrollDemo extends JFrame { public ScrollDemo() { String[] columnNames = {"Column"}; Object[][] data = { {"A"},{"B"},{"C"},{"D"},{"E"},{"F"}, {"A"},{"B"},{"C"},{"D"},{"E"},{"F"}, {"A"},{"B"},{"C"},{"D"},{"E"},{"F"}, {"A"},{"B"},{"C"},{"D"},{"E"},{"F"}, {"A"},{"B"},{"C"},{"D"},{"E"},{"F"}, }; add(new JScrollPane(new JTable(data, columnNames))); pack(); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { try { UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel"); } catch (Exception e) { // No Nimbus } UIManager.getLookAndFeelDefaults().put( "ScrollBar:ScrollBarThumb[Enabled].backgroundPainter", new FillPainter(new Color(127, 169, 191))); UIManager.getLookAndFeelDefaults().put( "ScrollBar:ScrollBarThumb[MouseOver].backgroundPainter", new FillPainter(new Color(127, 169, 191))); UIManager.getLookAndFeelDefaults().put( "ScrollBar:ScrollBarTrack[Enabled].backgroundPainter", new FillPainter(new Color(190, 212, 223))); UIManager.getLookAndFeelDefaults().put( "ScrollBar:\"ScrollBar.button\".size", 0); UIManager.getLookAndFeelDefaults().put( "ScrollBar.decrementButtonGap", 0); UIManager.getLookAndFeelDefaults().put( "ScrollBar.incrementButtonGap", 0); new ScrollDemo(); } }); } } 

使用的Painter代码:

 public class FillPainter implements Painter { private final Color color; public FillPainter(Color c) { color = c; } @Override public void paint(Graphics2D g, JComponent object, int width, int height) { g.setColor(color); g.fillRect(0, 0, width-1, height-1); } }