2014-12-15 2 views
1

Я хочу добавить JTextField в северную область рамки и панель (которая хранит копию того же JTextField) в восточном регионе.JTextField не отображается в GUI

Но появляется только поле в северном регионе. Панель в восточном регионе есть, но проблема в том, что поле не находится в панели.

import java.awt.*; 
import javax.swing.*; 

public class Gui { 

    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JPanel panel = new JPanel(); 

     frame.getContentPane().setBackground(Color.BLACK); 
     panel.setBackground(Color.YELLOW); 

     JTextField field = new JTextField("Your name"); 

     panel.add(field); 
     frame.add(BorderLayout.NORTH, field); 
     frame.add(BorderLayout.EAST, panel); 

     frame.setSize(300, 300); 
     frame.setVisible(true); 
     } 
    } 
+3

Вы не можете установить одно и то же jtextfield в 2 позиции, но вы можете использовать один и тот же документ. Вам нужно создать новый. И почему вам нужно добавить одно и то же jtextfield в 2 позиции, что вы пытаетесь сделать ??? –

ответ

4

Вы должны иметь два отдельных JTextField объекты, если вы хотите два отдельных поля: попробуйте добавить

JTextField field2 = new JTextField("Your second field"); 

и изменить первый add() вызов на frame к

frame.add(BorderLayout.NORTH, field2); 

Это будет производство

enter image description here

, который я предполагаю, это то, что вы хотите.

+0

Спасибо, я забыл, что Java передается по значению. – Aschente

+4

@lddangsta Это не совсем проблема, проблема в том, что компонент может находиться только в одном родительском контейнере, просто невозможно добавить один экземпляр компонента в более чем один контейнер за раз – MadProgrammer

+0

Хорошо, но почему поле рамки появляется вместо поля панели? – Aschente

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