0

我正在尝试学习一点 Swing,并且正在尝试14.46.2.Add 组件到 JScrollPane示例。代码是这样的:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension; 
import java.awt.FlowLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.border.LineBorder;

public class AddingToJScrollPane {

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

  JLabel label = new JLabel("Label");
  label.setPreferredSize(new Dimension(1000, 1000));
  JScrollPane jScrollPane = new JScrollPane(label);

  JButton jButton1 = new JButton();

  jScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
  jScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
  jScrollPane.setViewportBorder(new LineBorder(Color.RED));
  jScrollPane.getViewport().add(jButton1, null);

  frame.add(jScrollPane, BorderLayout.CENTER);
  frame.setSize(400, 150);
  frame.setVisible(true);
 }
}

从页面中您可以看到预期的结果。

在此处输入图像描述

但是,只需复制和粘贴该代码,我就会得到下图中的结果。我试图了解示例是否已过时或示例图像错误(教程图像上的红色边框在哪里?)。此外,我的滚动条未启用,而我期望它们启用。我是否缺少使它们启用的东西(在教程中它们没问题)?我正在使用JDK7。

在此处输入图像描述

4

2 回答 2

3

看到红色边框就OK了,就是这行引起的:

jScrollPane.setViewportBorder(new LineBorder(Color.RED));

作为背景信息,您应该知道在 Swing 中为组件设置彩色线边框是一种有用的调试可能性(否则通常很难看到一个组件在哪里结束,另一个组件从哪里开始),所以这里作者可能想调试一些东西截屏后,忘记从代码中删除这一行。

顺便说一句,如果你想学习 Swing,最好的在线资源是“官方”资源:http: //docs.oracle.com/javase/tutorial/uiswing/components/scrollpane.html

编辑:滚动条已启用,不像它们“变灰”,如果单击箭头,则会发生视觉变化。没有什么可以滚动的,因为按钮总是调整为可见区域的大小。正如我所说,这不是一个很好的例子,不要在这里学习......

于 2013-01-06T21:33:23.977 回答
1

代码没问题,边框是红色

jScrollPane.setViewportBorder(new LineBorder(Color.RED));

并且链接中的图像是错误的图像

于 2013-01-06T21:29:04.907 回答