gpt4 book ai didi

java - 用户操作时显示的 Swing 卡布局更改面板

转载 作者:行者123 更新时间:2023-12-01 17:18:13 26 4
gpt4 key购买 nike

我目前正在编写一个界面,其中有一个 JFrame 类和两个 JPanel 类。首次执行脚本时,将显示面板 A。我在面板 A 中有一个 JButton,我希望在单击它时显示面板 B 而不是面板 A。

有什么办法可以做到这一点吗?

最佳答案

阅读tutorial为此。

您可以使用CardLayoutnext()方法来显示下一张卡片,

或者您可以使用 show(...); 显示特定卡片。

简单的例子:

import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Example {

public static void main(String[] args){
JFrame frame = new JFrame();

final JPanel panel = new JPanel(new CardLayout());

JLabel l1 = new JLabel("1");
JLabel l2 = new JLabel("2");
JLabel l3 = new JLabel("3");

panel.add(l1,"l1");
panel.add(l2,"l2");
panel.add(l3,"l3");

JButton btn = new JButton("next");
btn.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent arg0) {
CardLayout layout = (CardLayout) panel.getLayout();
layout.next(panel);
}
});

JButton btnSpec = new JButton("l3");
btnSpec.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent arg0) {
CardLayout layout = (CardLayout) panel.getLayout();
layout.show(panel, "l3");
}
});

frame.add(panel);
frame.add(btn,BorderLayout.SOUTH);
frame.add(btnSpec,BorderLayout.NORTH);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

}

关于java - 用户操作时显示的 Swing 卡布局更改面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20566460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com