2015-05-08 2 views
0

Когда я запускаю эту программу, я не вижу полосу прокрутки на ярлыке. Что мне не хватает?ScrollPane не отображается на JLabel

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class Util1 
{ 
    public static void main(String[] args) 
    { 
     new Util1(); 
    } 

    public Util1() 
    { 
     EventQueue.invokeLater(new Runnable() 
     { 
      public void run() 
      { 

       JFrame frame = new JFrame("Test"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setLayout(new BorderLayout()); 
       frame.add(new ExamplePane()); 

       frame.pack(); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    } 

    protected class ExamplePane extends JPanel 
    { 
     public ExamplePane() 
     { 
      final JPanel panel = new JPanel(new GridBagLayout()); 
      final JLabel message = new JLabel("<html>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello</html>"); 

      message.setPreferredSize(new Dimension(500, 50)); 
      JScrollPane scroller = new JScrollPane(message, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
      scroller.setViewportView(message); 

      panel.add(scroller); 
      add(panel); 
     }    
    }   
} 
+1

Это 'message.setPreferredSize' плохой старт – MadProgrammer

+0

Изменение менеджер компоновки , Я вынул 'panel' и установил диспетчер макета' ExamplePane' в 'BorderLayout' – MadProgrammer

+0

Я предполагаю, что html вызывает его. Возможно, первый ответ здесь помогает: http://stackoverflow.com/questions/9335138/add-a-jscrollpane-to-a-jlabel – ThoFin

ответ

3

Чтобы увидеть полосу прокрутки обернуть «сообщение» JLabel в JPanel, а затем добавить JPanel в JScrollPane как ниже:

public ExamplePane() { 
     final JPanel panel = new JPanel(new GridBagLayout()); 
     final JLabel message = new JLabel("<html>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello</html>"); 
     message.setPreferredSize(new Dimension(500, 50)); 

     final JPanel messagePanel = new JPanel(); 
     messagePanel.add(message); 

     JScrollPane scroller = new JScrollPane(messagePanel, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
     scroller.setPreferredSize(new Dimension(100, 50)); 

     panel.add(scroller); 
     add(panel); 
    } 
Смежные вопросы