为什么我的JScrollPane与示例不同?

时间:2013-01-06 21:20:53

标签: java swing jscrollpane

我正在尝试学习一些Swing,我正在尝试14.46.2.Add component to 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);
 }
}

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

enter image description here

但是,只需复制并粘贴该代码,我会在下面的图片中得到结果。我试图了解示例是否已过期或示例图像是否错误(教程图像上的红色边框在哪里?)。此外,我的滚动条没有启用,而我期待它们是。我错过了什么来启用它们(在教程中他们没问题)?我正在使用JDK7。

enter image description here

2 个答案:

答案 0 :(得分:3)

可以看到红色边框,它是由这一行引起的:

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

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

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

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

答案 1 :(得分:1)

代码正常,边框为红色

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

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