2017-10-31 1 views
0

Also habe ich dieses Problem, wo, wenn ich die Komponenten zum zweiten JPanel hinzufügen, sie nicht angezeigt werden.Komponenten nicht im zweiten 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); 

} 

} 

Die Sekunden Komponenten in jeder JPanel werden nicht geschaltet. Ich habe sie zum ersten JPanel hinzugefügt und ich habe das gleiche Problem. In anderen Klassen, mit der Hauptmethode, füge ich den Haupt JPanel dem Rahmen hinzu.

+1

'null' Layouts würde durch erste Annahme von Fragen – MadProgrammer

+1

Sie habe versucht, hinzuzufügen' opciones2' zu den beiden Platten. Es kann nur in einem sein. – AJNeufeld

+1

Eine Komponente kann sich nur in einem einzelnen Container befinden. Wenn Sie versuchen, eine Komponente einem zweiten Container hinzuzufügen, wird sie automatisch aus dem aktuellen Container entfernt. – MadProgrammer

Antwort

0

jpJugador2 ist 100 Pixel hoch.

Sie fügen Komponente bei y = 125 und darüber hinaus zum Beispiel

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

so werden sie das Ausmaß der Platte erscheinen ab, und somit nicht angezeigt.

Sie müssen sie in den 200x100 Ausdehnungen der zweiten Platte zu positionieren, zum Beispiel)

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

Sie hatten Recht. Vielen Dank! –

Verwandte Themen