JScrollPane和Text Wrap尚未运行

时间:2013-12-01 21:22:21

标签: java swing jscrollpane jtextarea jscrollbar

我期待一个带有文本包装的框和一个当窗口变得太小而无法显示所有文本时出现的滚动条。然而,这些功能元素都不存在。

  JFrame f = new JFrame();
  JRootPane root = f.getRootPane();
  Container content = root.getContentPane();
  JButton button = new JButton("Generate New Phrase");
  JPanel infoPanel = new JPanel();
  JTextArea info = new JTextArea();
  JScrollPane scrilla = new JScrollPane(info);

  public CorporateSloganGenerator() throws FileNotFoundException, IOException {
      phraseGenerator = new PhraseGeneratorFromFile();

      f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      infoPanel.setLayout(new FlowLayout());
      info.setColumns(40);
      info.setRows(20);
      infoPanel.add(info);
      ControlListener listensUp = new ControlListener();
      button.addActionListener(listensUp);
      content.add(infoPanel, BorderLayout.CENTER);
      content.add(button, BorderLayout.SOUTH);
      root.setDefaultButton(button);    

      info.add(scrilla);
      info.setFont(new Font("Dialog", Font.ITALIC, 28));
      button.setFont(new Font("Dialog", Font.PLAIN, 18));
      info.setLineWrap(true);
      info.setWrapStyleWord(true);
      info.setEditable(false);
      f.setVisible(true);
      f.pack();

1 个答案:

答案 0 :(得分:2)

通常,当您想要提供可滚动支持时,组件被设置为滚动窗格视图,例如,而不是...

info.add(scrilla);

你应该使用类似......

的东西
scrilla.setViewportView(info);

然后你应该把它添加到框架中......

f.add(scrilla);

在让它可见之前......

此外,虽然并非完全要求,但在显示之前pack框架是有意义的,例如......

f.pack();
f.setVisible(true);

您可能还想查看How to use scroll panes了解更多详情