Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Making the JTextArea or JEditorPane in a JFrame scrollable

I've been doing some research about Swing in order to build a css editor with Java. I'm stuck trying to export CSS and HTML in JTextArea's ( I'll after create .css document. ) Here is the GridLayout that my main layout calls after clicking "Build" menu item.

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);

    }
}

It's pretty straight forward. Just help me adding scroll bars or panes to these textArea's. Any other suggestions in the website do not work.

like image 535
mozcelikors Avatar asked Jun 24 '12 16:06

mozcelikors


People also ask

How do you create a scrollable textArea in a Java Swing frame?

JFrame frame = new JFrame ("Test"); JTextArea textArea = new JTextArea ("Test"); JScrollPane scrollV = new JScrollPane (textArea); JScrollPane scrollH = new JScrollPane (textArea); scrollV. setVerticalScrollBarPolicy(JScrollPane. VERTICAL_SCROLLBAR_ALWAYS); scrollH. setHorizontalScrollBarPolicy(JScrollPane.

How do I display JTextArea?

The following code creates and initializes the text area: textArea = new JTextArea(5, 20); JScrollPane scrollPane = new JScrollPane(textArea); textArea. setEditable(false); The two arguments to the JTextArea constructor are hints as to the number of rows and columns, respectively, that the text area should display.


1 Answers

Its this way...

JTextArea text = new JTextArea();

JScrollPane scroll = new JScrollPane(text);

Edited part

add(scroll);

Here is one working code for your help :

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();
            }
        });
    }
}
like image 80
Kumar Vivek Mitra Avatar answered Sep 30 '22 20:09

Kumar Vivek Mitra