问题描述
请问如果控制JTextArea,使其弹出的时候窗口不超过屏幕之外。 问题补充:JtextArea是放在JDialog中,菜鸟不懂,给大家添误会了
解决方案
简单的例子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() {@Overridepublic 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);}}
解决方案二:
不知道提问者到底想问啥。如果是问dialog不位于屏幕中央,就按照我这个设置 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));如果是想问JTextArea的问题,那你看看clxy的代码,对JTextArea的知识就有些了解了。
解决方案三:
在JDialog构造方法中加入下面的语句: 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));
解决方案四:
我表示没看懂。。。。。。JTextArea仅仅是个文本区控件,是需要放到容器中的,怎么会弹出呢?下面回答的增加滚动条,使用mdi我更不理解。。。。。。请详细描述,或者直接贴代码
解决方案五:
这个JTextArea肯定是放在某个container里的,引用弹出的时候窗口不超过屏幕之外所以不应该是控制JTextArea,而应该是控制那个窗口(JFrame或 JWindow),调用setSize()。(除非你们的代码中硬性撑大窗口)如果是要控制JTextArea的尺寸,取决于使用的layout manager.1. 如果使用了,设置setPreferredSize()。2. 如果没有使用layout manager,设置setSize()。建议是两个都设置下。
解决方案六:
获取屏幕比例或者分辨率,动态设置它的大小
解决方案七:
加滚动条http://flyheaven.blog.163.com/blog/static/740117220081114112029469/
解决方案八:
java swing mdi这个可以解决的:http://blog.sina.com.cn/s/blog_6f07b6eb0100oi97.html