我有这个课程作为我的问题的一个例子。滚动窗格不滚动,我看不出一个很好的理由:
import java.awt.Dimension;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class DoesNotScroll{
public static void main(String[] args){
String str = "this\n\nshould\n\n\n\nscroll\n\n\nthis is the bottom";
message("test", str, JOptionPane.INFORMATION_MESSAGE);
}
public final static void message(String title, String message, int messageType){
JTextArea messageArea = new JTextArea();
messageArea.setMinimumSize(new Dimension(300, 100));
messageArea.setMaximumSize(new Dimension(300, 100));
messageArea.setPreferredSize(new Dimension(300, 100));
messageArea.setEditable(false);
JScrollPane scroller = new JScrollPane(messageArea);
scroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scroller.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
messageArea.setText(message);
messageArea.revalidate();
messageArea.repaint();
JOptionPane.showMessageDialog(null, scroller, title, messageType);
}
}
感谢任何帮助,
-C
答案 0 :(得分:3)
我在此处设置的问题是我在调用messageArea.setPreferredSize()
而不是scroller.setPreferredSize()
。一旦我使用了调整方法调用messageArea并将它们添加到滚动条,滚动条就可见了。我不确定为什么它会这样做,但如果我弄明白,我会更新这个答案。如果有人知道,这里的评论将不胜感激。
答案 1 :(得分:2)
我在此处设置的问题是我在调用
messageArea.setPreferredSize()
而不是scroller.setPreferredSize()
在这种情况下,需要调用任何一个都表示存在问题。通过在构造函数中提供列/行大小来设置文本区域的“首选大小”。将其添加到滚动窗格。完成工作。
import javax.swing.*;
public class DoesScroll {
public static void main(String[] args){
String str = "this\n\nshould\n\n\n\nscroll\n\n\nthis is the bottom";
message("test", str, JOptionPane.INFORMATION_MESSAGE);
}
public final static void message(String title, String message, int messageType){
JTextArea messageArea = new JTextArea(3,20);
messageArea.setEditable(false);
JScrollPane scroller = new JScrollPane(messageArea,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
messageArea.setText(message);
JOptionPane.showMessageDialog(null, scroller, title, messageType);
}
}