仅调整JTextArea的垂直大小

时间:2016-10-09 12:20:05

标签: java swing resize layout-manager jtextarea

调整JTextArea垂直大小的最佳方法是什么?我想我应该把JTextArea放到JScrollPane中(我可以用滚动条创建一个简单的窗格)。但我想通过鼠标垂直滚动JTextArea。我试图按照这个tut使用类: https://tips4java.wordpress.com/2009/09/13/resizing-components/,但它可以调整所有方面的组件。

我想要这样的东西:

http://www.w3schools.com/cssref/playit.asp?filename=playcss_resize&preval=vertical

或类似textarea的东西,您可以在此处发布对主题的回答。

编辑:

我的一段代码,包含ComponentResizer类(来自https://tips4java.wordpress.com/2009/09/13/resizing-components/

package textsamplerdemo;

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

public class TextSamplerDemo extends JPanel {

    public TextSamplerDemo() {
        setLayout(new BorderLayout());
        JTextArea textArea = new JTextArea(10, 20);
        textArea.setLineWrap(true);
        textArea.setWrapStyleWord(true);
        JScrollPane scrollPane = new JScrollPane(textArea);
        ComponentResizer componentResizer = new ComponentResizer();
        componentResizer.registerComponent(scrollPane);
        add(scrollPane, BorderLayout.PAGE_START);
    }

    /**
     * Create the GUI and show it. For thread safety, this method should be
     * invoked from the event dispatch thread.
     */
    private static void createAndShowGUI() {
        //Create and set up the window.
        JFrame frame = new JFrame("TextSamplerDemo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //Add content to the window.
        frame.add(new TextSamplerDemo());
        //Display the window.
        frame.pack();
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        //Schedule a job for the event dispatching thread:
        //creating and showing this application's GUI.
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                //Turn off metal's use of bold fonts
                UIManager.put("swing.boldMetal", Boolean.FALSE);
                createAndShowGUI();
            }
        });
    }
}

1 个答案:

答案 0 :(得分:1)

  

但它可以调整所有方面的组件。

ComponentResizer支持maximum size属性。所以你可以这样做:

JTextArea textArea = new JTextArea(5, 20);
ScrollPane scrollPane = new JScrollPane( textArea );
Dimension d = scrollPane.getPreferredSize();
d.height = Toolkit.getDefaultToolkit().getScreenSize().height;
ComponentResizer cr = new ComponentResizer();
cr.setMaximumSize(d));
cr.registerComponent(scrollPane);