请问如果控制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.
如果使用了,设置setPreferredSize()。
如果没有使用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的知识就有些了解了。