我有一个场景,当用户点击按钮时,将打开一个带有文本区域的弹出窗口。文本区域在需要时会有一些带滚动条的内容。为了实现这一点,我使用了JDialog并在JDialog中添加了一个文本区域。在我的情况下,我能够显示按钮单击对话框和带内容的对话框上的文本区域。但我无法获得文本区域的滚动条。我也将JScrollPane用于文本区域。
public class DialogPanel {
public void createDialog() {
final JFrame mainFrame = new JFrame();
mainFrame.setVisible(true);
mainFrame.setSize(500, 600);
mainFrame.setLayout(new BorderLayout());
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton btn = new JButton("Open Dialog");
mainFrame.add(btn, BorderLayout.SOUTH);
JTextField txtField = new JTextField();
mainFrame.add(txtField, BorderLayout.NORTH);
btn.setPreferredSize(new Dimension(100, 100));
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
JDialog dialog = new JDialog(mainFrame);
dialog.setLocationByPlatform(true);
JTextArea txtArea = new JTextArea();
txtArea.setAutoscrolls(true);
txtArea.setPreferredSize(new Dimension(900, 500));
txtArea.setBorder(BorderFactory.createLineBorder(Color.BLACK));
txtArea.setFont(new Font("courier new", Font.PLAIN, 12));
txtArea.setLineWrap(true);
JScrollPane txtAreaScroll = new JScrollPane();
txtAreaScroll.setViewportView(txtArea);
txtAreaScroll.setAutoscrolls(true);
File file;
String line = null;
StringBuilder fileContents = new StringBuilder();
try {
file = new File(
"D:\\Softwares\\Apache\\apache-tomcat-7.0.47\\RUNNING.txt");
BufferedReader reader = new BufferedReader(new FileReader(
file));
while ((line = reader.readLine()) != null) {
fileContents.append(line + "\n");
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
txtArea.setText(fileContents.toString());
dialog.add(txtAreaScroll);
dialog.pack();
dialog.setVisible(true);
}
});
}
public static void main(String[] args) {
DialogPanel dialogPanel = new DialogPanel();
dialogPanel.createDialog();
}
}
答案 0 :(得分:4)
基本上,txtArea.setPreferredSize(new Dimension(900, 500));
正在删除JTextArea
使用的自动计算,它用于确定显示所有文本所需的空间量。你有效地说,只需要500像素的高度。
您可以“设置”滚动窗格的首选大小,但这并不是真正推荐的。相反,您希望更改getPreferredScrollableViewportSize
JTextArea
返回的值
这告诉滚动窗格可视区域的大小......如果可以......
JTextArea txtArea = new JTextArea() {
@Override
public Dimension getPreferredScrollableViewportSize() {
return new Dimension(900, 500);
}
};
请查看Scrollable了解详情
<强>更新强>
正如AndrewThompson指出的那样,更好(和首选的方式)是简单地指定JTextArea
的行和列,并让它根据平台渲染功能找出这意味着什么... < / p>
JTextArea txtArea = new JTextArea(40, 100);
是的,为了简单......
答案 1 :(得分:0)
您正在使用dialog.pack()
查看here并为对话框定义自己的尺寸
答案 2 :(得分:0)
这样你可以使用带滚动的文本区域:
log4j.appender.R.File=${catalina.home}/logs/myapplication.log