我问a question之前,如何使JTextField从下面插入其文本。现在我遇到了一些代码问题。我编辑了一下,只是为了测试。下面是我现在使用的代码:JScrollPane的行为与JTextArea异常
public class BaseTextAreaDemo {
private static JTextArea textArea;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
final JFrame frame = new JFrame("Base JTextArea App");
final JPanel panel = new JPanel();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
panel.setLayout(new BorderLayout());
JPanel textAreaPanel = getBaseTextArea();
JScrollPane scrollPane = new JScrollPane(textAreaPanel) {
public Dimension getPreferredSize() {
return new Dimension(300, 230);
}
};
panel.add(scrollPane, BorderLayout.SOUTH);
JTextField textField = new JTextField();
textField.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
textArea.append(arg0.getActionCommand() + "\n");
}
});
frame.add(panel, BorderLayout.CENTER);
frame.add(textField, BorderLayout.SOUTH);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
private JPanel getBaseTextArea() {
textArea = new JTextArea();
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
textArea.append("bla bla bla\n");
textArea.append("new text here");
JPanel panel = new JPanel(new BorderLayout());
panel.setBackground(textArea.getBackground());
panel.setBorder(textArea.getBorder());
textArea.setBorder(null);
panel.add(textArea, BorderLayout.SOUTH);
return panel;
}
});
}
我只是增加了一个文本框,因为我还需要一个在节目中,我需要这,这是有用的需要加入更多行这种方式。
现在的问题是,当我运行这个程序,并添加行直到出现一个垂直滚动条时,水平线也会出现。我已经想到,你可以关掉它,但是一些文字掉在屏幕之外。此外,当您将框架变宽并且将其恢复为正常大小时,水平滚动条将保持与加宽窗口相同的尺寸。
另一个问题是,滚动的速度在JTextField中非常低。
我不想禁用水平滚动条,因为那样文字就会掉到屏幕上。文本框仍然会比它显示的区域大。 – Creator13
@CaspervanBattum然后,只需将textField设置为常量尺寸值即可。 – Tdorno
@CaspervanBattum检查我的帖子编辑 –