Java:使Jframe不能水平滚动,以及JTextArea

Bla*_*ein 1 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);
}
Run Code Online (Sandbox Code Playgroud)

然后我的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);
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,我不希望滚动窗格能够水平滚动,只能垂直滚动.当我向文本区域添加一些太大而无法放入窗口的内容时,会出现水平滚动条.有没有办法可以阻止水平滚动,而只是让文本区域打印出太大而不适合下一行?

例:

(示例文本区域在需要允许水平滚动之前只能容纳20个字符)

代替

Hello, my name is Bob.
Run Code Online (Sandbox Code Playgroud)

这会出现

Hello, my name is B
ob.
Run Code Online (Sandbox Code Playgroud)

小智 6

您可以设置JScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER)以确保永远不会有水平滚动.另外,你的textArea需要JTextArea.setWrapStyleWord(true)JTextArea.setLineWrap(true);