【发布时间】:2014-04-24 05:56:39
【问题描述】:
在编写程序时,我注意到JOptionPane.showMessageDialog() 调用存在错误。我使用一个按钮来创建一个 JTextArea,它会包装然后显示一个包含该文本区域的对话框。
但是,如果文本区域太大,对话框本身的大小将无法正确调整到 JTextArea 的高度。在本例中,对话框切断了 OK 按钮。
我在以下代码中复制了该错误:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DialogBug {
public static void main(String[] args) {
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final String text = "looooooooooooooooooooooong text looooooooooooooooooooooooooooooooooooooong text";
JButton button = new JButton();
button.setPreferredSize(new Dimension(30, 30));
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JTextArea area = new JTextArea(text, 0, 50);
area.setEditable(false);
area.setLineWrap(true);
area.setWrapStyleWord(true);
area.append(text);
area.append(text);
area.append(text);
JOptionPane.showMessageDialog(frame, area, "why does it do this", JOptionPane.WARNING_MESSAGE);
}
});
frame.add(button);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
我会发布一张图片,但我没有足够的声誉......
有没有办法在不使用 JScrollPane 的情况下解决这个问题?
截图如下:
【问题讨论】:
标签: jtextarea jdialog word-wrap