2016-01-31 60 views
0

为什么Jtextarea没有出现在这段代码中? 我试着在jpanel中使用gridbaglayout添加一个Jtextarea。 框架可以正常打开,但没有Jtextarea。 我无法识别问题。请有人帮助我。为什么JTextArea没有出现在这段代码中?

import javax.swing.*; 
    import java.awt.*; 
    public class ServerTest{ 
    //object declaration 
    JFrame f; 
    JPanel p; 
    JTextArea ta; 
    JTextField tf; 
    JButton b1,b2; 
    GridBagConstraints gbc; 
    //constructor 
    public ServerTest(){ 
     //instantiation 
     f=new JFrame("Server"); 
     p=new JPanel(); 
     p.setBackground(Color.green); 
     ta=new JTextArea("Hello"); 
     tf=new JTextField(); 
     b1=new JButton("EMO"); 
     b2=new JButton("VOICE"); 
     gbc=new GridBagConstraints(); 
     //end of instantiation 

     //frame task 
     f.setLayout(new FlowLayout()); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     p.setLayout(new GridBagLayout()); 

     gbc.gridx=0; 
     gbc.gridy=0; 
     gbc.gridwidth=3; 
     gbc.gridheight=5; 
     p.add(ta,gbc); 
     f.add(p); 
     f.pack(); 
     f.setVisible(true); 
     //end of frame task 

    } 

    //Main method 
    public static void main(String []args){ 
     ServerTest st = new ServerTest(); 
    } 
} 
+0

_but没有的JTextArea上it._但在这里我没有找不到像这样的问题。 – Satya

+0

与@Satya发现的一样,代码似乎对我也很好。 – DevilsHnd

+0

是的,你们都是对的..这是一个愚蠢的职位。 – SHB

回答

0

应设置GridBagLayout的某些属性来初始化布局的背景网格:

columnWeights 
columnWidths 
rowWeights 
rowHeights 

而且这是不坏的整体框架布局改变从FlowLayoutBorderLayout

f.setLayout(new BorderLayout()); 

你改变你的代码就像这个样本,它会工作:

//frame task 
f.setLayout(new BorderLayout()); 
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
GridBagLayout bagLayout = new GridBagLayout(); 

bagLayout.columnWeights = new double[]{1.0,1.0,1.0,1.0,1.0}; 
bagLayout.columnWidths = new int[]{25,25,25,25,25}; 
bagLayout.rowWeights = new double[]{1.0,1.0,1.0,1.0,1.0}; 
bagLayout.rowHeights = new int[]{25,25,25,25,25}; 
p.setLayout(bagLayout); 

gbc.gridx=0; 
gbc.gridy=0; 
gbc.gridwidth=3; 
gbc.gridheight=5; 
gbc.fill = GridBagConstraints.BOTH; 

另外GridBagConstraints#fill在使用GridBagLayout时,属性在确定组件大小时起着重要作用。

如果你想看到一些具体的例子: SWING - GridBagLayout Class

好运

+0

感谢您的回答 – SHB

+0

欢迎您。如果它有帮助并解决了您的问题,您可以通过检查绿色复选标记来接受它作为答案。 – STaefi

+0

f.setLayout(new BorderLayout());在默认情况下在API中有(JFrame)BorderLayout – mKorbel

1

答案很简单,有...

Do you see what I see

这里是证明...

Proof

你可能有更好的运气,如果你使用的JTextArea(int, int)构造和使用JScrollPane,例如...

Maybe a better idea

public ServerTest() { 
    //... 
    ta = new JTextArea(10, 20); 
    //... 
    p.add(new JScrollPane(ta), gbc); 
} 
+0

谢谢..我弄错了.. – SHB

相关问题