2013-09-17 2 views
4

Кто-нибудь видит проблему с моим кодом, который может помешать JTextArea стать прокручиваемым при запросе данных, которые расширяют его границы, также кажется, что некоторые слова сокращаются пополам, но JScrollPane, предположительно предположительно для исправления проблемы это не удается. Спасибо за помощь. упаковка guiprojj;Создание прокрутки JTextArea

import java.awt.BorderLayout; 
import java.awt.Dimension; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.Map; 

import javax.swing.*; 

import com.eclipsesource.json.JsonObject; 
import com.google.gson.JsonParser; 
import com.json.parsers.JSONParser; 
import com.json.parsers.JsonParserFactory; 


public class gui { 
    public static void main(String[] args) 
    { 
     JFrame maingui = new JFrame("Gui"); 
     JButton enter = new JButton("Enter"); 
     final JTextArea movieinfo = new JTextArea(5,20); 
     final JTextField movietext = new JTextField(16); 
     final JScrollPane scrolll = new JScrollPane(movieinfo); 
     JPanel pangui = new JPanel(); 
     pangui.add(movietext); 
     pangui.add(enter); 
     scrolll.add(movieinfo); 
     pangui.add(movieinfo); 
     maingui.setResizable(false); 
     maingui.setVisible(true); 
     movieinfo.setLineWrap(true); 
     movieinfo.setEditable(false); 
     maingui.add(pangui); 
     scrolll.getPreferredSize(); 
     //pangui.setPreferredSize(new Dimension(300, 150)); 
     //pangui.add(scrolll, BorderLayout.CENTER); 
     //movieinfo.add(scrolll); 
     maingui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     maingui.pack(); 
     enter.addActionListener(new ActionListener(){ 
      public void actionPerformed(ActionEvent e) 
      { 
       System.out.println(Test.getMovieInfo(movietext.getText())); 
       JsonParserFactory factory=JsonParserFactory.getInstance(); 
       JSONParser parser=factory.newJsonParser(); 
       Map jsonData=parser.parseJson(Test.getMovieInfo(movietext.getText())); 
       String Title = (String)jsonData.get("Title"); 
       String Year = (String)jsonData.get("Year"); 
       String Plot = (String)jsonData.get("Plot"); 
       movieinfo.setText("Title: "+Title+"\nYear: "+ Year +"\nPlot: "+Plot); 
      } 
      }); 

     } 
} 
+0

'movieinfo.setText (" Title: "+ Title +" \ nYear: "+ Year +" \ nPlot: "+ Plot);' Рассмотрим преобразование 'JTextArea' в' JTable', если графики достаточно короткие, в противном случае используйте 'JTextComponent', который поддерживает стилизованный текст и делает 3 заголовка для 3 разделов. –

ответ

9
final JTextArea movieinfo = new JTextArea(5,20); 
final JScrollPane scrolll = new JScrollPane(movieinfo); 

JPanel pangui = new JPanel(); 
//scrolll.add(movieinfo); 
//pangui.add(movieinfo); 
pangui.add(scroll); 

Компонент может иметь только одного родителя. Вы создаете scrollpane с хорошей текстовой областью. Но тогда вы добавляете текстовое поле на панель, что плохо, так как область текста удаляется из scrollpane).

Вам необходимо добавить прокрутку к панели, так как это компонент, который содержит текстовую область.

+0

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

+0

Это не поддерживается компонентом Swing, о котором я знаю. Текстовая область не является «текстовым редактором». – camickr

+0

Does [wrapStyleWord] (http://docs.oracle.com/javase/6/docs/api/javax/swing/JTextArea.html#setWrapStyleWord (boolean)) соответствует вашим потребностям? – jackrabbit

0

Я думаю, вы должны использовать ScrollPane.

JTextArea ta = new JTextArea(); 
JScrollPane sp = new JScrollPane(ta); 
+0

Я сделал свое исследование до публикации вопроса. –

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