调整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();
}
});
}
}
答案 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);