2013-03-16 5 views
2
private JPanel contentPane; 
public Driver() { 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setBounds(100, 100, 867, 502); 
    contentPane = new JPanel(); 
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    setContentPane(contentPane); 
    contentPane.setLayout(null); 
    final JTextArea textArea = new JTextArea(); 
    textArea.setEditable(false); 
    textArea.setBounds(10, 11, 831, 393); 
    JScrollPane scroll = new JScrollPane(textArea); 
    scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 
    textArea.setText("dfgf"); 
    contentPane.add(scroll); 
} 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        Driver frame = new Driver(); 
        frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

Почему это не показывает textArea с помощью прокрутки?JTextArea нет полосы прокрутки

моя проблема в том, что я не вижу даже textArea. но если я сделаю contentPane.add(scroll);, я могу видеть textArea, но не прокрутка.

+0

Для лучшей помощи и раньше рассмотрите возможность публикации [SSCCE] (http: // sscce.org /) – Reimeus

+0

Я отправил основную часть моего кода – 2013-03-16 21:12:49

ответ

3

«Почему это не отображает текст с полосой прокрутки?»

Поскольку окно просмотра в ScrollPane имеет свой собственный менеджер компоновки и изменения положения использования & в текстовой области, чтобы удовлетворить свои потребности

Окно просмотр будет использовать предпочтительное свойство размера текстовой области, чтобы определить, как заложить это из. Вы можете изменить это значение, добавив текст в текстовую область и/или установив свойства строки/столбца в соответствии с вашими потребностями.

Обновлены например

enter image description here

import java.awt.BorderLayout; 
import java.awt.EventQueue; 
import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTextArea; 
import javax.swing.UIManager; 
import javax.swing.UnsupportedLookAndFeelException; 

public class TestScrollPane03 { 

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

    public TestScrollPane03() { 
     EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
       } catch (ClassNotFoundException ex) { 
       } catch (InstantiationException ex) { 
       } catch (IllegalAccessException ex) { 
       } catch (UnsupportedLookAndFeelException ex) { 
       } 

       JTextArea textArea = new JTextArea(100, 50); 
       JScrollPane scrollPane = new JScrollPane(textArea); 

       JFrame frame = new JFrame("Test"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setLayout(new BorderLayout()); 
       frame.add(scrollPane); 
       frame.setSize(200, 200); 
       frame.setLocationRelativeTo(null); 
       frame.setVisible(true); 
      } 
     }); 
    }  
} 

обновлялись на основе изменений на вопрос

Как camickr уже отмечалось, проблема у вас возникли связано с хау вы составляете свои компоненты.

Этот contentPane.setLayout(null); является лишь одной из ваших многочисленных проблем. Прекратите использование макетов null и начните с использования соответствующих менеджеров компоновки.

+0

Я не вижу текстовое поле, я не вижу никакого текста, когда я пишу ему – 2013-03-16 20:56:27

+0

Это похоже на проблему с макетом панели прокрутки. Я предполагаю, что с тех пор, как вы начали использовать 'setBounds', что вы пытаетесь сделать свой собственный макет, вместо того, чтобы позволить API-интерфейсу компоновки сделать это для вашего – MadProgrammer

+0

Работает отлично для меня – MadProgrammer

2

почему это Безразлично не показывать TEXTAREA с полосой прокрутки

Полоса прокрутки будет на самом деле появляются, но без «большого пальца захвата», пока вы не приложили достаточно текст к JTextArea как расширить его размер за пределами размера окна просмотра JScrollPane.

Вы используете null макет для вашего contentPaneJPanel. Это никогда не бывает хорошей идеей. Здесь ваш JScrollPane имеет размер по умолчанию 0 x 0, поэтому никогда не появляется. Есть много layout managers, доступных для различных размеров. & Требования к размещению.

+0

, проблема в том, что я не вижу самого текстового поля, как будто он был перезаписан чем-то еще – 2013-03-16 20:52:07

+0

Да, я тоже зазвоню, если вы не используете диспетчер компоновки, затем используйте его. В противном случае вы столкнетесь с этими проблемами. – Reimeus

2

Полоса прокрутки появится автоматически, когда предпочтительный размер компонента, добавленного в область прокрутки, больше, чем размер прокрутки. Для этого необходимо использовать диспетчеры компоновки.

final JTextArea textArea = new JTextArea(); 
textArea.setBounds(10, 11, 831, 393); 
JScrollPane scroll = new JScrollPane(textArea); 

Вы не должны использовать setBounds(). Вместо этого вы делаете что-то вроде:

final JTextArea textArea = new JTextArea(5, 30); 
JScrollPane scroll = new JScrollPane(textArea); 

Теперь, когда вы загружаете более 5 строк текста, появится полоса прокрутки. Конечно, все это предполагает, что вы используете подходящий манагер.

+0

Я даже не вижу сам текст. текстовое поле не видно. я не вижу никакого текста – 2013-03-16 20:51:51

+0

Я уже говорил, что проблема заключается в том, что вы не используете диспетчер макетов. Я бы предположил, что scrollpane имеет размер 0, поэтому он не окрашен. Исправьте свой код для использования Менеджеров макетов, а затем отправьте свой [SSCCE] (http://sscce.org/), если у вас все еще есть проблемы. – camickr

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