java - 谁拥有 Java Swing 可滚动视口(viewport)的边缘颜色?

标签 java swing awt jscrollpane scrollable

我有一个 JScrollPane 和一个将 Scrollable 实现为视口(viewport) View 的 JPanel。当我将 ScrollableTracksViewportHeight 和 ScrollableTracksViewportWidth 设置为 false 时,我的面板保持其首选大小。好的。问题是我无法弄清楚谁拥有可滚动面板周围的空间。我觉得我已经尝试过更改每个组件和对话框的背景,但似乎无济于事。我怎样才能把丑陋的灰色变成霓虹黄这样有趣的颜色?

这是我正在谈论的内容的屏幕截图:

这是我想要的:

enter image description here

下面是复制第一张图片的代码:

package components;

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

@SuppressWarnings("serial")
public class DialogWithScrollPane extends JFrame {

  ScrollablePanel scrollablePanel;

  public DialogWithScrollPane() {
    super();

    setResizable(true);

    Container pane = getContentPane();

    scrollablePanel = new ScrollablePanel();

    final JScrollPane scrollPane = new JScrollPane();
    scrollPane.setPreferredSize(new Dimension(300,300));
    scrollPane.setViewportView(scrollablePanel);
    scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    pane.add(scrollPane);

    setMinimumSize(new Dimension(300, 300));        
    setVisible(true);
  }

  class ScrollablePanel extends JPanel implements Scrollable {

    public ScrollablePanel() {
      super();

      setBackground(Color.red);
      setPreferredSize(new Dimension(200, 100));
    }

    public Dimension getPreferredScrollableViewportSize() {
      return getPreferredSize();
    }

    public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) {
      return 0;
    }

    public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) {
      return 0;
    }

    public boolean getScrollableTracksViewportHeight() {
      return false;
    }

    public boolean getScrollableTracksViewportWidth() {
      return false;
    }

  }

  public static void main(String[] args) {
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        new DialogWithScrollPane();
      }
    });
  }
}

最佳答案

scrollPane.getViewport().setBackground(Color.yellow);

关于java - 谁拥有 Java Swing 可滚动视口(viewport)的边缘颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6488552/

相关文章:

java - 服务器套接字读取长字符串

java - 如何在 Java 中创建循环并递增索引以用作字符串的一部分?

java - 是否可以使带有 GridBagLayout 的 JPanel 内的元素从左上角开始?

java - 清除透明窗口上的 JFrame 背景

java - mysql中使用存储过程导出数据到excel

java - 查找错误 : real threat behind EI_EXPOSE_REP

java - 按钮事件后第二个面板为空

java - JTabbedPane - addTab(标题,图标,组件)+ setTabComponentAt(索引,组件)

java - GridLayout 不工作的问题

java - 检查java awt 2D游戏,jbutton后台更新问题