JavaEclipse试图使用JTextArea

JavaEclipse试图使用JTextArea,java,swing,jtextarea,preferredsize,Java,Swing,Jtextarea,Preferredsize,在过去两天的最后几个小时里,我一直在试图弄明白为什么我的GUI不能正常工作。这就是我来找你们大家的地方,看看你们是否能帮助我 现在我要做的是一个基于文本的游戏,很简单吧?我想用屏幕左侧的按钮排列,底部是你的健康和所有有趣的东西,中间是游戏的主要内容,文本,但无论我做了什么,我都无法让它合适,然后我偶然发现了pack()所以我试了一下,是的……它做了它应该做的事,可悲的是,现在我只有一个词,屏幕很小,关于如何使屏幕变大,并保持大屏幕,有什么想法吗 我将编辑这篇文章,并向您展示我的代码,包括text

在过去两天的最后几个小时里,我一直在试图弄明白为什么我的GUI不能正常工作。这就是我来找你们大家的地方,看看你们是否能帮助我

现在我要做的是一个基于文本的游戏,很简单吧?我想用屏幕左侧的按钮排列,底部是你的健康和所有有趣的东西,中间是游戏的主要内容,文本,但无论我做了什么,我都无法让它合适,然后我偶然发现了pack()所以我试了一下,是的……它做了它应该做的事,可悲的是,现在我只有一个词,屏幕很小,关于如何使屏幕变大,并保持大屏幕,有什么想法吗

我将编辑这篇文章,并向您展示我的代码,包括textarea(请注意,我在不工作的情况下使用java已经有两天了)

在这里,我已经把它注释掉了,因为我正在玩它


你们还有什么想看的吗?

你们可以试着在你们的对象或面板/框架上设置首选尺寸:

myPanel.preferredSize(new Dimension(1000,500));


实际上,Pack只会使您的框架或面板达到所需的大小,以适应其中的组件。尝试preferredSize()方法,如果仍然不起作用,可能会发布一些代码。

可能会出现很多问题,如果没有更多的代码,就很难确定确切的问题

我突然想到了几件事

  • 使用适当的布局管理器,甚至复合布局管理器
  • JTextArea
    提供附加信息,以允许它定义可用空间,例如行和列
  • JTextArea
    添加到
    JScrollPane
    以确保它不会突然占用实际可用的更多空间


把你试过的代码贴出来,说出你到底在哪里遇到了问题。我试过了,这个东西冲我大喊大叫……什么东西冲你大喊大叫?(O_O)@R.J可能没有足够的代表来编辑帖子?@user2189715听起来像是你想增加很多。把它裁剪到最基本的部分,特别是主框架的构造。使用
JTextArea#setRows/Columns
更好地影响首选大小。尽可能避免使用
setPreferredSize
。如果OP没有使用任何布局管理器,那么这将不会产生任何影响。实际上,没有任何
组件。preferredSize(Dimension)
-请精确(即使答案如此次优,但出于不使用
setPreferredSize(Dimension)
)的原因)。
myPanel.preferredSize(new Dimension(1000,500));
myFrame.preferredSize(new Dimension(1000,500));
myTextArea.preferredSize(new Dimension(300,200));
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class TestLayout21 {

    public static void main(String[] args) {
        new TestLayout21();
    }

    public TestLayout21() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        public TestPane() {
            setLayout(new BorderLayout());

            JPanel actions = new JPanel(new GridBagLayout());
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.gridwidth = GridBagConstraints.REMAINDER;
            gbc.fill= GridBagConstraints.HORIZONTAL;

            actions.add(new JButton("Walk"), gbc);
            actions.add(new JButton("Run"), gbc);
            actions.add(new JButton("Jump"), gbc);
            actions.add(new JButton("Eat"), gbc);
            actions.add(new JButton("Drink"), gbc);

            add(actions, BorderLayout.WEST);
            add(new JProgressBar(), BorderLayout.SOUTH);

            JTextArea textArea = new JTextArea(20, 40);
            add(new JScrollPane(textArea));

        }

        @Override
        public Dimension getPreferredSize() {
            return new Dimension(200, 200);
        }
    }

}