2016-01-31 3 views
0

Почему Jtextarea не отображается в этом коде? Я попытался добавить Jtextarea в jpanel, используя gridbaglayout. Рамка открывается правильно, но на ней нет 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 

Также не плохо, чтобы изменить расположение всего кадра из FlowLayout в BorderLayout:

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 (новый BorderLayout()); имеет (JFrame) BorderLayout в API по умолчанию – 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

Смежные вопросы