我正在尝试学习一些 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);
}
}
从页面中您可以看到预期的结果。
但是,只需复制并粘贴该代码,我就得到下图中的结果。我试图了解该示例是否已过时或示例图像是否错误(教程图像上的红色边框在哪里?)。此外,我的滚动条未启用,而我希望它们启用。我是否缺少一些东西来启用它们(在教程中它们没问题)?我使用的是 JDK7。
最佳答案
可以看到红色边框,这是由这一行引起的:
jScrollPane.setViewportBorder(new LineBorder(Color.RED));
作为背景信息,您应该意识到,在 Swing 中为组件设置彩色线条边框是一种有用的调试可能性(否则通常很难看出一个组件在哪里结束而另一个组件在哪里开始),所以这里作者可能想要截取屏幕截图后调试某些内容,却忘记从代码中删除此行。
顺便说一句,如果您想学习 Swing,最好的在线资源是“官方”资源:http://docs.oracle.com/javase/tutorial/uiswing/components/scrollpane.html
编辑:滚动条已启用,它们不像“灰色”,如果您单击箭头,则会出现视觉变化。没有什么可以滚动,因为按钮的大小总是调整为可见区域的大小。正如我所说,这不是一个很好的例子,不要从这里学习......
关于java - 为什么我的 JScrollPane 与示例不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14186859/