2013-03-20 28 views
-1

我花了过去两天的最后几个小时试图弄清为什么我无法让我的GUI正常工作。这里是我向大家介绍的地方,看看你能否帮助我。Java-Eclipse-试图使用JTextArea

现在我想要做的是基于文本的游戏,简单的权利?好吧,我想用屏幕左侧的按钮排列起来,你的健康和底部的所有有趣的东西,游戏的主要肉,TEXT,在中心,但不管我做了什么我无法让它适合,然后我偶然发现pack(),所以我尝试了它,并且是啊...它做了它应该做的事,可悲的是现在我有一个词,屏幕很小,任何想法至于我如何让屏幕更大,并保持大?

要编辑这个和你扔我的代码位和peices,包括文本区域(请注意,我一直在使用Java进行高达2天而不是在工作)

JTextArea textarea = new JTextArea("example"); 

    frame.add(textarea); 
    //frame.pack(); 

这里我已收到评论,因为我在玩它。

还有什么其他的你想要看一看?

+1

后你已经尝试了代码,并说正是你面对的一个问题。 – SudoRahul 2013-03-20 07:17:34

+0

我试过了,这个东西对我大叫...... – Kage 2013-03-20 07:23:30

+0

什么东西对你大吼大叫? (O_o) – SudoRahul 2013-03-20 07:24:24

回答

0

你可以尝试在你的对象或面板设置首选大小/帧本身:

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

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

myTextArea.preferredSize(new Dimension(300,200)); 
+1

否。使用'JTextArea#setRows/Columns'可以更好地影响首选大小。如果可能的话,避免使用'setPreferredSize'。如果OP没有使用任何布局管理器,那么这将不起作用。 – MadProgrammer 2013-03-20 07:23:26

+2

实际上,没有任何'component.preferredSize(Dimension)' - 请准确(即使答案与此不尽相同,因为不使用'setPreferredSize(Dimension)'[请参阅最近的QA](http ://stackoverflow.com/a/7229519/203657))。 – kleopatra 2013-03-20 08:50:41

0

包确实会只是让你的框架或面板只需根据需要放大以适应其中的组件。尝试preferredSize()方法,也许发布一些代码,如果它仍然无法正常工作。

1

有可能是想错了,没有更多的代码很难针点的确切的问题这么多的事情......

有几件事情跳到脑海......

  • 使用合适的布局管理器,即使化合物布局管理器
  • 提供附加信息到JTextArea以允许它来定义一个可用的空间,如行和列
  • 添加JTextAreaJScrollPane,以确保它不会突然占据更多的空间,然后是实际可用

enter image description here

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); 
     } 
    } 

}