您好,我正在尝试制作游戏,我想做的基本操作是添加带有滚动条的JTextArea。这是我的代码:

package TestStuff;

import javax.swing.*;

@SuppressWarnings("serial")
public class JTextAreaTest extends JFrame
{
     public static void main(String[] args)
     {
          new JTextAreaTest();
     }

     public JTextAreaTest()
     {
          this.setSize(1500, 600);
          setDefaultCloseOperation(
               JFrame.EXIT_ON_CLOSE);
          this.setLocation(450, 175);
          this.setExtendedState(JFrame.
MAXIMIZED_BOTH);
          this.setTitle("Game Display Test");

          panel1 = new JPanel(null);

          final JTextArea gameDisplay = new JTextArea(
               500, 300);
          gameDisplay.setBounds(424, 300, 500, 300);
          gameDisplay.setBackground(Color.BLACK);

          Font font = new Font ("Verdana", Font.BOLD,
              14);
          gameDisplay.setFont(font);
          gameDisplay.setForeground(Color.WHITE);

          final JScrollPane displayScroll = new JScrollPane(
               gameDisplay);
          displayScroll.setHorizontalScrollBarPolicy(
               JScrollPane.HORIZONTAL_SCROLLBAR_AS_
                    NEEDED);
          displayScroll.setVerticalScrollBarPolicy(
               JScrollPane.
               VERTICAL_SCROLLBAR_AS_NEEDED);

          panel1.add(gameDisplay);
          panel1.add(displayScroll);

          setContentPane(panel1);

          this.setVisible(true);
     }
}


当我运行它时,一切都可以正常工作,但是当文本超出JTextArea的范围时,滚动条将永远不会出现!是的,我知道我使用的是绝对定位(无布局),这很糟糕,但出于其他原因,我需要使用它。提前致谢! (另外,由于某种原因,我无法在计算机上连接到该站点,但是我以前使用过你们,而且您很棒,所以我必须在手机上键入此消息。很抱歉,如果问题的布局搞砸了, ,电话:P)

最佳答案

您打电话的时候...

panel1.add(gameDisplay);
panel1.add(displayScroll);


您正在有效地从gameDisplay中删除​​displayScroll,因为一个组件只能有一个父对象。

它确实起作用的事实归结为您正在使用gameDisplay面板的位置和大小而不是displayScroll的事实,您应该...

采用

panel1.add(displayScroll);


相反,但请确保仅调整displayScroll的大小和位置,因为displayScroll会照顾gameDisplay

10-02 00:20