2012-06-24 13 views
6

Robię badania dotyczące Swinga, aby zbudować edytor css z Javą. Utknąłem próbując wyeksportować CSS i HTML w JTextArea (po utworze dokumentu .css.) Oto GridLayout, który mój układ główny wywołuje po kliknięciu pozycji menu "Build".Tworzenie JTextArea lub JEditorPane w przewijarce JFrame

package csseditor_gui_built; 
import java.awt.GridLayout; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JTextArea; 
import javax.swing.JScrollPane; 
import javax.swing.JScrollBar; 
import javax.swing.text.DefaultCaret; 
import java.awt.Font; 
import java.awt.Color; 


public class ExportGridLayout extends JFrame { 
    public ExportGridLayout(String HTML, String CSS){ 


     GridLayout layout = new GridLayout(1,2,2,2); 
     setLayout(layout); 

     JTextArea textAreaHtml = new JTextArea(); 
     JTextArea textAreaCss = new JTextArea(); 

     //Creating a new font. 
     Font fontumuz = new Font("Courier New", Font.PLAIN, 12); 

     // Setting constructor strings 
     textAreaHtml.setText(HTML); 
     textAreaCss.setText(CSS); 

     //Additional details.. 
     textAreaHtml.setEditable(false); 
     textAreaCss.setEditable(false); 

     //Appending font to the textArea's 
     textAreaHtml.setFont(fontumuz); 
     textAreaCss.setFont(fontumuz); 

     // Adding the objects to JFrame 
     add(textAreaHtml); 
     add(textAreaCss); 

    } 
} 

To całkiem proste. Pomóż mi dodać paski przewijania lub okienka do tych plików tekstowych. Wszelkie inne sugestie na stronie internetowej nie działają.

+1

Aby wykonać pracę związaną z HTML, należy rozważyć użycie [JTextPane/JEditorPane] (http://docs.oracle.com/javase/tutorial/uiswing/components/editorpane.html), "JTextArea" nie jest przeznaczona dla takich osób rzeczy, IMHO. –

+0

To samo, użyję, ale po prostu nie mogę ich przewinąć – mozcelikors

Odpowiedz

8

Jest to sposób ...

JTextArea text = new JTextArea();

JScrollPane scroll = new JScrollPane(text);

Edited część

add(scroll);

Oto jeden kod działa za pomoc:

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

public class JTextAreaExample 
{ 
    private void createAndDisplayGUI() 
    { 
     JFrame frame = new JFrame("JTextArea Scrollable"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JPanel contentPane = new JPanel(); 
     contentPane.setLayout(new GridLayout(1, 2, 2, 2)); 

     JTextArea tArea1 = new JTextArea(); 
     tArea1.setLineWrap(true); 
     JTextArea tArea2 = new JTextArea(); 
     tArea2.setLineWrap(true); 
     tArea1.setText("I got a long long line of text in my JTextArea"); 
     tArea2.setText("I got a long long line of text in my JTextArea"); 

     JScrollPane scroller1 = new JScrollPane(); 
     JScrollPane scroller2 = new JScrollPane(); 
     scroller1.setViewportView(tArea1); 
     scroller2.setViewportView(tArea2); 

     contentPane.add(scroller1); 
     contentPane.add(scroller2); 

     frame.setContentPane(contentPane); 
     frame.setSize(100, 100); 
     frame.setLocationByPlatform(true); 
     frame.setVisible(true); 
    } 

    public static void main(String... args) 
    { 
     SwingUtilities.invokeLater(new Runnable() 
     { 
      public void run() 
      { 
       new JTextAreaExample().createAndDisplayGUI(); 
      } 
     }); 
    } 
} 
+0

Obawiam się, że to nie działa. Po prostu spróbuj go na kompilatorze. Czy to dlatego, że używam GridLayout czy nie, nie wiem – mozcelikors

+0

To działa dobrze dla JTextArea ... I tak, mam nadzieję, że masz wystarczająco dużo wpisu, aby wypełnić JTextArea tak, aby pojawił się pasek przewijania, a także ustawić Rozmiar ramki. –

+0

To naprawdę nie działa. Mam za dużo wejścia. W tekstach powinny pojawić się kod całej strony. Cóż, robią. Ale bez pasków przewijania. – mozcelikors