2013-03-11 4 views
2

Я определил JTextArea следующим образом:JTextArea держит прокрутки главной панели к верхнему

JTextArea textArea = new JTextArea(); 
textArea.setText("Some text"); 
textArea.setEditable(true); 
textArea.setLineWrap(true); 
textArea.setWrapStyleWord(true); 

JScrollPane scrollPane = new JScrollPane(textArea); 
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); 
scrollPane.getVerticalScrollBar().setAutoscrolls(false); 

Теперь этот компонент является одним из ряда компонентов, которые были добавлены к основным JPanel, которая определяется следующим образом :

JPanel panel = new JPanel(); 
panel.setName("Some name"); 

JScrollPane scrollPane = new JScrollPane(); 
scrollPane.setName("Some name"); 
scrollPane.getViewport().add(panel); 
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); 
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
scrollPane.getVerticalScrollBar().setAutoscrolls(false); 

Теперь компонент JTextArea появляется в нижней части главной панели и частично скрыт, так что вы должны прокрутить вниз, чтобы увидеть все это. Но проблема, которую я получаю, заключается в том, что когда я нажимаю на нее, основная панель автоматически снова прокручивается назад, снова скрывая большую часть моего компонента JTextArea. Поэтому после нажатия на нее пользователь должен затем прокрутить вниз, чтобы ввести что-то.

Но я не могу понять, почему это делается. Есть ли проблема с использованием JTextArea? Если я использую JTextField, проблема не возникает.

Любая помощь будет принята с благодарностью!

+0

трудно сказать без SSCCE, но может быть похож на [недавний вопрос] (http://stackoverflow.com/a/14277765/203657) BTW: политика и autoscrolls полосы прокрутки не имеют никакого отношения к прокрутке поведение – kleopatra

+0

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

+0

Используйте менеджеров макетов, чтобы зафиксировать положение и размер вашего JTextArea и других скрытых компонентов, и поэтому они будут видны. http://docs.oracle.com/javase/tutorial/uiswing/layout/using.html – JavaFan

ответ

0

Я думаю, что замена scrollPane.getViewport().add(panel) на scrollPane.getViewport().setView(panel) решит проблему.

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