2013-03-20 31 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); 
     } 
    } 

}