Как я могу сложить / наложить jPanels в Java? - PullRequest
4 голосов
/ 21 февраля 2012

Я действительно новичок в программировании GUI на Java, я провел много исследований и не смог найти ответ на эту проблему.

У меня есть простое JFrame с меню, и внутри этого JFrame У меня есть JPanel с формой входа (если пользователи вводят свои имя пользователя и пароль), и затем я хочу изменить это JPanel другому JPanel в зависимости от того, что пользователи хотят делать.

Каков наилучший способ сделать это? Я думаю, что укладка JPanels в порядке. Но после добавления новых JLayeredPanels в Netbeans они не складываются. Я где-то читал, что должен использовать Z-порядок или что-то в этом роде, но я не могу найти его в представлении конструктора.

Что ж, большое спасибо за терпение!

1 Ответ

7 голосов
/ 21 февраля 2012

CardLayout класс имеет полезный API, который может удовлетворить ваши требования.Использование методов типа next(), first(), last() может быть полезным.Я подготовил простую демонстрацию смены панелей внутри родительской панели и / или рамки.Взгляните на это:

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

public class PanelChanger implements ActionListener
{
    JPanel panels;

    public void init(Container pane)
    {
        JButton switcher = new JButton("Switch Active Panel!");
        switcher.addActionListener(this);

        JPanel login = new JPanel();
        login.setBackground(Color.CYAN);
        login.add(new JLabel("Welcome to login panel."));

        JPanel another = new JPanel();
        another.setBackground(Color.GREEN);
        another.add(new JLabel("Yeah, this is another panel."));

        panels = new JPanel(new CardLayout());
        panels.add(login);
        panels.add(another);

        pane.add(switcher, BorderLayout.PAGE_START);
        pane.add(panels, BorderLayout.CENTER);
    }

    public void actionPerformed(ActionEvent evt)
    {
        CardLayout layout = (CardLayout)(panels.getLayout());
        layout.next(panels);
    }

    public static void main(String[] args)
    {
         JFrame frame = new JFrame("CardLayoutDemo");
         PanelChanger changer = new PanelChanger();
         changer.init(frame.getContentPane());
         frame.pack();
         frame.setVisible(true);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...