请教Java Swing中JTextarea问题

请问如果控制JTextArea,使其弹出的时候窗口不超过屏幕之外。

简单的例子

[code="java"]
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class TextareaTest {

public static void main(String[] args) {

    final JFrame frame = new JFrame("Textarea");
    final JDialog dialog = new TextareaDialog(frame, true);

    JButton button = new JButton("Click Me!");
    button.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            dialog.setLocationRelativeTo(frame);
            dialog.pack();
            dialog.setSize(300, 200);
            dialog.setVisible(true);
        }
    });
    frame.getContentPane().add(button, BorderLayout.CENTER);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLocationRelativeTo(null);
    frame.pack();
    frame.setVisible(true);
}

}

class TextareaDialog extends JDialog {

JTextArea textarea = new JTextArea();

public TextareaDialog(Frame owner, boolean modal) {
    super(owner, modal);

    // 初始化
    setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    setTitle("文本框测试");

    // 添加文本框。
    textarea.setLineWrap(true);
    JScrollPane scroll = new JScrollPane(textarea);
    getContentPane().add(scroll, BorderLayout.CENTER);

    // ====-------------------------------测试数据。
    String text = "长长的测试数据";
    for (int i = 0; i <= 1000; i++) {
        text += "好长";
    }
    textarea.setText(text);
}

}
[/code]

java swing mdi这个可以解决的:
[url]http://blog.sina.com.cn/s/blog_6f07b6eb0100oi97.html[/url]

加滚动条
http://flyheaven.blog.163.com/blog/static/740117220081114112029469/

获取屏幕比例或者分辨率,动态设置它的大小

这个JTextArea肯定是放在某个container里的,
[quote]弹出的时候窗口不超过屏幕之外[/quote]

所以不应该是控制JTextArea,而应该是控制那个窗口(JFrame或 JWindow),调用setSize()。
(除非你们的代码中硬性撑大窗口)

如果是要控制JTextArea的尺寸,取决于使用的layout manager.

  1. 如果使用了,设置setPreferredSize()。

  2. 如果没有使用layout manager,设置setSize()。

建议是两个都设置下。

我表示没看懂。。。。。。
JTextArea仅仅是个文本区控件,是需要放到容器中的,怎么会弹出呢?
下面回答的增加滚动条,使用mdi我更不理解。。。。。。

请详细描述,或者直接贴代码

在JDialog构造方法中加入下面的语句:
[code="java"]
this.setResizable(false);
this.setSize(354, 126);
Dimension lSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension lCsize = this.getSize();
this.setLocation( (int) ( (lSize.getWidth() - lCsize.getWidth()) / 2),
(int) ( (lSize.getHeight() - lCsize.getHeight()) / 2));
[/code]

不知道提问者到底想问啥。
如果是问dialog不位于屏幕中央,就按照我这个设置
[code="java"]
this.setResizable(false);
this.setSize(300, 150);
Dimension lSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension lCsize = this.getSize();
this.setLocation( (int) ( (lSize.getWidth() - lCsize.getWidth()) / 2),
(int) ( (lSize.getHeight() - lCsize.getHeight()) / 2));
[/code]

如果是想问JTextArea的问题,那你看看clxy的代码,对JTextArea的知识就有些了解了。