Java GUI按钮ActionListeners
在我的GUI程序中,我有4组卡片,我想在每个卡片按钮上添加一个动作监听器,这样当它被点击时,它就不可见了。我已经尝试了source.setVisible(),但是它仍然不起作用。我想我的问题是我创建了所有的卡片按钮,但是我不完全确定Java GUI按钮ActionListeners,java,eclipse,Java,Eclipse,在我的GUI程序中,我有4组卡片,我想在每个卡片按钮上添加一个动作监听器,这样当它被点击时,它就不可见了。我已经尝试了source.setVisible(),但是它仍然不起作用。我想我的问题是我创建了所有的卡片按钮,但是我不完全确定 import java.awt.GridBagConstraints; import java.awt.Dimension; import java.awt.GridBagLayout; import java.awt.Image;
import java.awt.GridBagConstraints;
import java.awt.Dimension;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.border.Border;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.BorderLayout;
public class CardGame extends JFrame implements ActionListener {
private JButton Deal;
CardGame(){
setTitle("A Card Game");
setSize(2000, 1000);
final GridBagConstraints layoutSpec = new GridBagConstraints();
layoutSpec.gridx = 0;
layoutSpec.gridy = 0;
final GridBagConstraints dealSpec = new GridBagConstraints();
layoutSpec.gridx = 4;
layoutSpec.gridy = 4;
final GridBagConstraints dealSpecs = new GridBagConstraints();
layoutSpec.gridx = 7;
layoutSpec.gridy = 7;
JPanel cardA = new JPanel();
cardA.setPreferredSize(new Dimension(100, 100));
add(cardA, BorderLayout.NORTH);
for(int i = 0; i < 13; i++) { //Loop that Creates a Hand of Cards for Hand A
cardA.add(new JButton("Card A-" + Integer.toString(i+1)), layoutSpec);
}
JPanel cardB = new JPanel();
cardB.setPreferredSize(new Dimension(100, 100));
add(cardB, BorderLayout.EAST);
for(int i = 0; i < 13; i++) { //Loop that Creates a Hand of Cards for Hand B
cardB.add(new JButton("Card B-" + Integer.toString(i+1)), layoutSpec);
}
JPanel cardC = new JPanel();
cardC.setPreferredSize(new Dimension(100, 100));
add(cardC, BorderLayout.WEST);
for(int i = 0; i < 13; i++) { //Loop that Creates a Hand of Cards for Hand C
cardC.add(new JButton("Card C-" + Integer.toString(i+1)), layoutSpec);
}
JPanel cardD = new JPanel();
cardD.setPreferredSize(new Dimension(100, 100));
add(cardD, BorderLayout.SOUTH);
for(int i = 0; i < 13; i++) { //Loop that Creates a Hand of Cards for Hand D
cardD.add(new JButton("Card D-" + Integer.toString(i+1)), layoutSpec);
}
JPanel fillCenter = new JPanel();
fillCenter.setPreferredSize(new Dimension(100, 100));
add(fillCenter, BorderLayout.CENTER); //Adds a panel that fills the center of the JFrame
fillCenter.add(new JButton("Deal"), dealSpec); //Adds a Deal Button on top of the fillCenter JPanel
fillCenter.add(new JButton("Reset"), dealSpecs); //Adds a Reset Button on top of the fillCenter JPanel
}
@Override
public void actionPerformed(ActionEvent event){
if(event.getSource() == (Deal)){
};
if(event.getSource() == ("Deal"));
for(int i = 0; i < 13; i++){
if(event.getSource() == ("Card " + Integer.toString(i+1)));
}
}
public static void main(String[] args) {
CardGame cards = new CardGame();
cards.setVisible(true);
return;
}
导入java.awt.gridbag约束;
导入java.awt.Dimension;
导入java.awt.GridBagLayout;
导入java.awt.Image;
导入java.awt.Insets;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.border.border;
导入javax.swing.BorderFactory;
导入javax.swing.ImageIcon;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JPanel;
导入javax.swing.JTextField;
导入java.awt.BorderLayout;
公共类CardGame扩展JFrame实现ActionListener{
私人杰布顿交易;
纸牌游戏(){
片名(“纸牌游戏”);
设置大小(2000、1000);
final GridBagConstraints layoutSpec=新GridBagConstraints();
layoutSpec.gridx=0;
layoutSpec.gridy=0;
final GridBagConstraints dealSpec=新GridBagConstraints();
layoutSpec.gridx=4;
layoutSpec.gridy=4;
final GridBagConstraints dealSpecs=新的GridBagConstraints();
layoutSpec.gridx=7;
layoutSpec.gridy=7;
JPanel cardA=新的JPanel();
cardA.setPreferredSize(新尺寸(100100));
添加(cardA,BorderLayout.NORTH);
对于(int i=0;i<13;i++){//为手牌a创建一手牌的循环
添加(新的JButton(“卡A-”+Integer.toString(i+1)),布局规范);
}
JPanel cardB=新的JPanel();
卡片b.设置首选尺寸(新尺寸(100100));
添加(cardB,BorderLayout.EAST);
对于(inti=0;i<13;i++){//为手牌B创建一手牌的循环
添加(新的JButton(“卡B-”+Integer.toString(i+1)),布局规范);
}
JPanel cardC=新的JPanel();
卡片设置首选尺寸(新尺寸(100100));
添加(cardC,BorderLayout.WEST);
对于(inti=0;i<13;i++){//为手牌C创建一手牌的循环
添加(新的JButton(“卡C-”+Integer.toString(i+1)),布局规范);
}
JPanel cardD=新的JPanel();
卡片设置首选尺寸(新尺寸(100100));
添加(cardD,BorderLayout.SOUTH);
对于(inti=0;i<13;i++){//为手牌D创建一手牌的循环
cardD.add(新的JButton(“cardD-”+Integer.toString(i+1)),布局规范);
}
JPanel fillCenter=新的JPanel();
fillCenter.setPreferredSize(新尺寸(100100));
add(fillCenter,BorderLayout.CENTER);//添加填充JFrame中心的面板
add(newjbutton(“Deal”),dealSpec);//在fillCenter JPanel顶部添加一个Deal按钮
add(newjbutton(“Reset”),dealSpecs);//在fillCenter JPanel顶部添加一个Reset按钮
}
@凌驾
已执行的公共无效操作(操作事件){
if(event.getSource()==(交易)){
};
if(event.getSource()=(“交易”);
对于(int i=0;i<13;i++){
if(event.getSource()==(“卡片”+整数.toString(i+1)));
}
}
公共静态void main(字符串[]args){
CardGame卡=新的CardGame();
卡片。设置为可见(真);
返回;
}
}试试这个((JButton)event.getSource()).setVisible(false);