La adición de panel contenedor con Java swing

He hecho dos paneles y, a continuación, agrega en el tercer panel. ¿Cómo puedo agregar un panel a mostrar en la pantalla?

Aquí está mi código actual:

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

public class LibraryFront {

public static void main(String[] args)
{

    JFrame f1 = new JFrame();
    JPanel cards;
    final String BUTTONPANEL = "Card with JButtons";
    final String TEXTPANEL = "Card with JTextField";

    JPanel card1 = new JPanel();
    JPanel card2 = new JPanel();

    //Create the panel that contains the "cards".
    cards = new JPanel(new CardLayout());
    cards.add(card1, BUTTONPANEL);
    cards.add(card2, TEXTPANEL);

    Container c = getContentPane(); //this gives error
}
InformationsquelleAutor | 2011-01-13

4 Kommentare

  1. 1

    EDICIÓN:

    Me di cuenta ahora que usted tomó el fragmento de código (parte) de http://download.oracle.com/javase/tutorial/uiswing/layout/card.html y se coloca directamente en el método main. Ese código es sólo una parte del total de la implementación del programa en CardLayoutDemo.java. Usted necesita tomar un vistazo a ese código.

    Hay un montón de pequeños errores con el código. Aquí es un trabajo de implementación

    //it is good practice to only import the packages you need
    //so that you know exactly what you are dealing with
    import java.awt.BorderLayout;
    import java.awt.CardLayout;
    import java.awt.Color;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    public class LibraryFront {
    
        public static void main(String[] args) {
            //f1 is the JFrame
            //f1.getContentPane() would return the Container
            //but you do not actually need to add directly to it
            JFrame f1 = new JFrame();
            JPanel cards;
            final String BUTTONPANEL = "Card with JButtons";
            final String TEXTPANEL = "Card with JTextField";
    
            JPanel card1 = new JPanel();
            JPanel card2 = new JPanel();
    
            //Create the panel that contains the "cards".
            cards = new JPanel(new CardLayout());
            cards.add(card1, BUTTONPANEL);
            cards.add(card2, TEXTPANEL);
    
            //adjust background colors just so you can see what is happening
            cards.setBackground(Color.GREEN);
            card1.setBackground(Color.RED);
            card2.setBackground(Color.BLUE);
    
            //set the layout to BorderLayout
            //add the cards JPanel to the center
            f1.setLayout(new BorderLayout());
            f1.add(cards, BorderLayout.CENTER);
            f1.setSize(400, 300);
            f1.setTitle("Test Frame");
            f1.setVisible(true);
        }
    }
  2. 1

    LibraryFront no es el contenedor. JFrame f1 es, f1.getContentPane() debe trabajar y también es necesario añadir paneles a JFrame y configurarlo para que visible si no está visible.

  3. 0

    Tratar:

    Container c = f1.getContentPane();

    Llamar al método en el JFrame, no en su propia LibraryFront clase.

  4. 0

    Da un error porque su clase LibraryFront no contiene una getContentPane() método. En lugar de llamar a ese método en el marco.

    Hacer algo como:

    f1.getContentPane().add(cards);

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea