Java:使 Jframe 不水平滚动,和 JTextArea

标签 java swing textarea jframe

我有一个名为“Console”的类,其结构如下:

public Console(Game game) {
    super(new GridBagLayout());

    m_game = game;
    textField = new JTextField(20);
    textField.addActionListener(this);

    textArea = new JTextArea(20, 75);
    textArea.setEditable(false);
    JScrollPane scrollPane = new JScrollPane(textArea);

    GridBagConstraints c = new GridBagConstraints();
    c.gridwidth = GridBagConstraints.REMAINDER;

    c.fill = GridBagConstraints.HORIZONTAL;

    c.fill = GridBagConstraints.BOTH;
    c.weightx = 1.0;
    c.weighty = 1.0;
    add(scrollPane, c);
    add(textField, c);
}

然后是我的 Game 类中的一个方法:

public void createAndShowGUI() {

    JFrame frame = new JFrame("My game");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.add(newConsole);

    frame.pack();
    frame.setVisible(true);
    frame.setResizable(false);
}

我遇到的问题是,我不希望滚动 Pane 能够水平滚动,只能垂直滚动。当我将某些内容附加到太大而无法容纳在窗口中的文本区域时,会出现水平滚动条。有没有一种方法可以防止水平滚动,而只是让文本区域打印出太大而无法放在下一行的内容?

例子:

(示例文本区域只能容纳 20 个字符,然后才需要允许水平滚动)

代替

Hello, my name is Bob.

这会出现

Hello, my name is B
ob.

最佳答案

您可以设置 JScrollPane.setHorizo​​ntalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_​​NEVER) 以确保永远不会出现水平滚动。此外,您的 textArea 将需要 JTextArea.setWrapStyleWord(true)JTextArea.setLineWrap(true)

关于Java:使 Jframe 不水平滚动,和 JTextArea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8363261/

相关文章:

java - 执行使用 native 库(Java、.dll)的 .jar

java - 在 JavaFX 中显示多条消息

java - 为一个线程设置名称和线程组有什么好处?

java - 奇怪的计数器 - HackerRank

java - 安卓工作室 : java. lang.OutOfMemoryError

java - 用户关闭(Xs out)JFrame 后立即执行操作

java - 从已登录的 Windows 中获取用户名?对于我的 Swing 申请

user-interface - Swing 动画 : is there a GUI library animation like jquery (javascript) but for java?

html - 返回键在 <textarea> 中不起作用

html - Textarea CSS IE7 和 "enter key"创建行内空间