2017-10-31 10 views
0

두 번째 JPanel에 구성 요소를 추가하면 이러한 문제가 발생합니다.구성 요소가 두 번째로 표시되지 않습니다. JPanel

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

public class TestSeleccionJugadores2 extends JPanel { 
JPanel jpJugador1 = new JPanel(); 
JPanel jpJugador2 = new JPanel(); 

TitledBorder titledBorder1 = new TitledBorder("Jugador 1"); 
TitledBorder titledBorder2 = new TitledBorder("Jugador 2"); 

Font font1 = new Font("Microsoft JhengHei UI Light", Font.PLAIN + Font.BOLD, 14); 
Font font2 = new Font("Microsoft JhengHei UI Light", Font.PLAIN, 13); 

JLabel jlJ1 = new JLabel("Es un(a)"); 
JLabel jlJ2 = new JLabel("Es un(a)"); 
JLabel jlJ1Nombre = new JLabel("llamada(o)"); 
JLabel jlJ2Nombre = new JLabel("llamada(o)"); 

JComboBox<String> opciones1 = new JComboBox<>(new String[] {"Hombre", "Mujer", "Otro"}); 
JComboBox<String> opciones2 = new JComboBox<>(new String[] {"Hombre", "Mujer", "Otro"}); 

JTextField nombreJ1 = new JTextField("Jugador 1", 5); 
JTextField nombreJ2 = new JTextField("Jugador 2", 5); 

public TestSeleccionJugadores2() { 

jpJugador1.setLayout(null); 
jpJugador2.setLayout(null); 
setLayout(null); 

jpJugador1.setBounds(10, 25, 200, 100); 
jpJugador2.setBounds(10, 120, 200, 100); 
setBounds(0,0,300, 300); 

titledBorder1.setTitleFont(font1); 
titledBorder2.setTitleFont(font1); 

jpJugador1.setBorder(titledBorder1); 
jpJugador2.setBorder(titledBorder2); 

opciones1.setSelectedItem("Otro"); 
opciones2.setSelectedItem("Otro"); 

jlJ1.setBounds(10, 30, 80, 20); 
opciones1.setBounds(95, 30, 80, 20); 
jlJ1Nombre.setBounds(10, 55, 80, 20); 
nombreJ1.setBounds(95, 55, 80, 20); 

//These are showing in both JPanels. 
jlJ2.setBounds(10, 125, 80, 20); 
opciones2.setBounds(95, 125, 80, 20); 
jlJ2Nombre.setBounds(10, 155, 80, 20); 
nombreJ2.setBounds(95, 155, 80, 20); 

//Second components. 
jpJugador2.add(jlJ2); 
jpJugador2.add(opciones2); 
jpJugador2.add(jlJ2Nombre); 
jpJugador2.add(nombreJ2); 

jpJugador1.add(jlJ1); 
jpJugador1.add(opciones2); 
jpJugador1.add(jlJ1Nombre); 
jpJugador1.add(nombreJ1); 

add(jpJugador2); 
add(jpJugador1); 

} 

} 

초 구성 요소가 JPanel에 표시되지 않습니다. 첫 번째 JPanel에 추가 한 것과 같은 문제가 있습니다. 다른 클래스에서는 main 메서드를 사용하여 JPANel을 프레임에 추가합니다.

+1

'null' 레이아웃 것 당신은 두 패널에'opciones2'를 추가하려고했습니다 – MadProgrammer

+1

문제의 첫 번째 가정에 의해. 그것은 오직 하나 안에있을 수 있습니다. – AJNeufeld

+1

구성 요소는 하나의 컨테이너에만있을 수 있습니다. 두 번째 컨테이너에 구성 요소를 추가하려고하면 현재 컨테이너에서 자동으로 제거됩니다. – MadProgrammer

답변

0

jpJugador2은 100 픽셀입니다.

jlJ2.setBounds(10, 125, 80, 20); 

이 때문에 패널의 정도 떨어져 나타나는 것 예를 들어, 이후 Y = 125에 구성 요소를 추가하고, 따라서 전혀 표시되지 않는다.

당신은), 두 번째 패널에 200x100 범위 내에서 예를 들어 그들을 배치 할 필요가

jlJ2.setBounds(10, 25, 80, 20); 
+0

당신이 옳았습니다. 고마워요! –