Добавление панели в контейнер с помощью Java Swing - PullRequest
1 голос
/ 13 января 2011

Я сделал две панели, а затем добавил в третью панель.Как добавить панель для отображения на экране?

Вот мой текущий код:

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
}

Ответы [ 4 ]

1 голос
/ 14 января 2011

РЕДАКТИРОВАТЬ:
Я заметил, что вы взяли фрагмент кода (часть) из http://download.oracle.com/javase/tutorial/uiswing/layout/card.html и поместили его прямо в ваш основной метод.Этот код является лишь частью полной реализации программы на CardLayoutDemo.java .Вам нужно взглянуть на этот код.

В вашем коде много мелких ошибок.Вот рабочая реализация

//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);
    }
}
1 голос
/ 13 января 2011

LibraryFront не является контейнером. JFrame f1, f1.getContentPane() должно работать, и вам также нужно добавить панели в JFrame и установить его видимым, если не видимым.

0 голосов
/ 13 января 2011

Это дает вам ошибку, потому что ваш класс LibraryFront не содержит getContentPane() метод.Вместо этого вызовите этот метод в кадре.

Сделайте что-то вроде:

f1.getContentPane().add(cards);
0 голосов
/ 13 января 2011

Попробуйте:

Container c = f1.getContentPane();

Вызовите метод для JFrame, а не для LibraryFront класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...