Я создал эту простую программу. моя проблема в том, что я хочу отображать панели других классов без открытия нового JFrame. но я не мог создать какое-либо решение. может ли кто-нибудь сделать простой код, чтобы показать, как получить доступ к панелям других классов и заменить текущую панель?Как показать панели других классов в cardlayout?
package cardlayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class Clayou {
private JFrame jf = new JFrame("card layout");
private JPanel jp = new JPanel();
private JPanel jp1 = new JPanel();
private JPanel jp2 = new JPanel();
private JButton jb1 = new JButton("second");
private JButton jb2 = new JButton("first");
private CardLayout cl = new CardLayout();
Clayou() {
jp.setLayout(cl);
jp1.add(jb1);
jp2.add(jb2);
jp1.setBackground(Color.black);
jp2.setBackground(Color.white);
jp.add(jp1, "1");
jp.add(jp2, "2");
cl.show(jp, "1");
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
cl.show(jp, "2");
}
});
jb2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
cl.show(jp, "1");
}
});
jf.add(jp);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.pack();
jf.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Clayou();
}
});
}
}
Я не уверен, что вы имеете в виду? Как насчет интерфейса с методом для извлечения панели? 'public interface HasPanel {Component getPanel(); } ' – WalterM
хорошо я до сих пор не эксперт в ООП , так что я не получил то, что вы сказали эта программа имеет две панели в этом классе, и при нажатии кнопки соответствующей одна панель заменяет другую я хочу создать панель (s) в другом классе и заменить эти панели этой панелью, но без создания нового JFrame. я надеюсь, что у вас есть мой вопрос –