Java: создание Jframe без горизонтальной прокрутки и JTextArea - PullRequest
1 голос
/ 03 декабря 2011

У меня есть класс "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);
}

Проблема, с которой я столкнулсяЯ не хочу, чтобы панель прокрутки могла прокручивать по горизонтали, только по вертикали.Горизонтальная полоса прокрутки появляется, когда я добавляю в область текста что-то слишком большое, чтобы поместиться в окне.Есть ли способ предотвратить горизонтальную прокрутку, и вместо этого просто распечатать текстовую область слишком большой, чтобы уместить ее на следующей строке?

Пример:

(Пример текстовой области может толькопоместите 20 символов, прежде чем потребуется разрешить горизонтальную прокрутку)

Вместо

Hello, my name is Bob.

Это будет отображаться

Hello, my name is B
ob.

1 Ответ

6 голосов
/ 03 декабря 2011

Вы можете установить JScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER), чтобы гарантировать отсутствие горизонтальной прокрутки. Кроме того, вашей textArea потребуется JTextArea.setWrapStyleWord(true) и JTextArea.setLineWrap(true);

...