gpt4 book ai didi

java - showConfirmDialog 之后关闭后台 JFrame

转载 作者:行者123 更新时间:2023-12-01 23:51:32 25 4
gpt4 key购买 nike

我正在尝试编写一个非常简单的二十一点游戏。

这是应该显示当前绘制的牌的类:

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;

public class ShowRandomCard {
JFrame f = new JFrame();
JPanel p = new JPanel();

public void ShowUsARandomCard() {
f.setLayout(new BorderLayout());
p.add(new JLabel("A Panel"));
f.add(p, BorderLayout.NORTH);

// Picture
BufferedImage myPicture = null;
try {
myPicture = ImageIO.read(new File("somepicture"));
} catch (IOException e) {
e.printStackTrace();
}
JLabel picLabel = new JLabel(new ImageIcon(myPicture));
f.add(picLabel,BorderLayout.NORTH);

// elements

f.pack();
f.setVisible(true);

Blackjack jt = new Blackjack();
jt.dialog();

}

public void hideCards() {
f.setVisible(false);
f.remove(p);
f.dispose();
f.repaint();
}
}

这是实际的游戏类:

import static javax.swing.JOptionPane.*;

public class Blackjack {

ShowRandomCard it = new ShowRandomCard();

public void dialog() {

int answer2 = showConfirmDialog(null, "some message", "some title",
YES_NO_OPTION);
if (answer2 == YES_OPTION) {
garbageCollection();
it.ShowUsARandomCard();
if (answer2 == NO_OPTION || answer2 == CANCEL_OPTION) {
garbageCollection();
// System.exit(0);
}
}
}

public void garbageCollection() {
it.hideCards();
}
}

但是持有卡片的 JPanel 并没有消失。任何帮助将不胜感激。

最佳答案

当您从可见框架中删除组件时,基本代码是:

panel.remove(...);
panel.revalidate();
panel.repaint();

但是,很少有充分的理由使用这样的代码。相反,您应该使用 Card Layout隐藏/显示面板。

方法名称不以大写字符开头。 “GarbageCollection()”应该是 GarbageCollection()

关于java - showConfirmDialog 之后关闭后台 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16241951/

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