2012-05-14 2 views
0

У меня этот класс как пример моей проблемы. ScrollPane не прокручивается, и я не могу видеть причину, почему:Java: Почему эта прокрутка не прокручивается?

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

ответ

3

проблема с моей установкой здесь было то, что я был вызывая messageArea.setPreferredSize() вместо scroller.setPreferredSize(). После того, как я принял метод калибровки, отменил messageArea и добавил их в скроллер, полосы прокрутки были видны. Я не уверен, почему это работает так, как оно есть, но если я это выясню, я обновлю этот ответ. Если кто-то еще знает, комментарий здесь будет оценен.

+0

Это не решение. См. Мой ответ. –

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); 
    } 
} 
+1

@Chris Drappier: Подробнее [здесь] (http://stackoverflow.com/q/7229226/230513). – trashgod

Смежные вопросы