JavaEclipse试图使用JTextArea
在过去两天的最后几个小时里,我一直在试图弄明白为什么我的GUI不能正常工作。这就是我来找你们大家的地方,看看你们是否能帮助我 现在我要做的是一个基于文本的游戏,很简单吧?我想用屏幕左侧的按钮排列,底部是你的健康和所有有趣的东西,中间是游戏的主要内容,文本,但无论我做了什么,我都无法让它合适,然后我偶然发现了pack()所以我试了一下,是的……它做了它应该做的事,可悲的是,现在我只有一个词,屏幕很小,关于如何使屏幕变大,并保持大屏幕,有什么想法吗 我将编辑这篇文章,并向您展示我的代码,包括textarea(请注意,我在不工作的情况下使用java已经有两天了) 在这里,我已经把它注释掉了,因为我正在玩它JavaEclipse试图使用JTextArea,java,swing,jtextarea,preferredsize,Java,Swing,Jtextarea,Preferredsize,在过去两天的最后几个小时里,我一直在试图弄明白为什么我的GUI不能正常工作。这就是我来找你们大家的地方,看看你们是否能帮助我 现在我要做的是一个基于文本的游戏,很简单吧?我想用屏幕左侧的按钮排列,底部是你的健康和所有有趣的东西,中间是游戏的主要内容,文本,但无论我做了什么,我都无法让它合适,然后我偶然发现了pack()所以我试了一下,是的……它做了它应该做的事,可悲的是,现在我只有一个词,屏幕很小,关于如何使屏幕变大,并保持大屏幕,有什么想法吗 我将编辑这篇文章,并向您展示我的代码,包括text
你们还有什么想看的吗?你们可以试着在你们的对象或面板/框架上设置首选尺寸:
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);
}
}
}