gpt4 book ai didi

java - 是否可以指向特定的 JPanel

转载 作者:行者123 更新时间:2023-12-01 18:44:58 24 4
gpt4 key购买 nike

我有一个正在使用 CardLayout 的程序。我有不同属性的不同面板。我有一个名为“Enter”的按钮,我决定在每个面板上重复使用该按钮,但是单击该按钮时每个面板都会执行不同的操作。有没有办法说,当单击按钮但我位于特定面板时,然后执行此操作。如何直接指向面板?

最佳答案

您必须考虑的第一件事是:您不能向多个面板添加一个按钮,每个面板都应该有自己的组件。

如果您向多个面板添加一个按钮,请说:

JButton b = new JButton("Button");
//....
pan1.add(b);
pan2.add(b);
pan3.add(b);

在这种情况下,按钮将添加到最后一个面板(即 pan3),其他面板不会显示该按钮。

其次,我想从评论中提到一个 @trashgod 的好例子,并且为了防止混淆,请看这个例子:

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

public class CardLayoutDemo extends JFrame implements ActionListener {
private CardLayout cardLayout;
private JButton pan1,pan2;
private JPanel mainPanel;
public CardLayoutDemo(){
cardLayout = new CardLayout();
mainPanel = new JPanel(cardLayout);
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
pan1 = new JButton("To Second Panel");
pan2= new JButton ("To First Panel");
pan1.addActionListener(this);
pan2.addActionListener(this);
p1.setBackground(Color.green);
p2.setBackground(Color.BLUE.brighter());
p1.add(pan1);
p2.add(pan2);
mainPanel.add(p1,"1");
mainPanel.add(p2,"2");
cardLayout.show(mainPanel, "1");

add(mainPanel);
setDefaultCloseOperation(3);
setLocationRelativeTo(null);
setVisible(true);
pack();
}
@Override
public void actionPerformed(ActionEvent ev){
if(ev.getSource()==pan1)
cardLayout.show(mainPanel, "2");
else if(ev.getSource()==pan2)
cardLayout.show(mainPanel, "1");
}

public static void main(String...args){
SwingUtilities.invokeLater(new Runnable() {

@Override
public void run() {
new CardLayoutDemo().setVisible(true);

}
});
}
}

关于java - 是否可以指向特定的 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18167919/

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