私はトリビアクラックからインスピレーションを得たプロジェクトを作成しました。Cashは選択されているHashMapから値をランダムに削除します
SporHmapは、3つの値(質問)を格納するHashMapです。 actionListenerメソッドでは、プログラムはハッシュマップからランダムなキーを取得し、QuestionClassのJLabelとJButtonへの質問とその答えを出力します。
ここでの問題は、私は質問を繰り返す必要はありません。質問が表示された場合は、再度表示しないでください。私は使用しましたtl.SporHmap.remove(randomValue);値が選択された後にが変更されましたが、何も変更されませんでした。ここで
TriviaLinked tl = new TriviaLinked();
tl.SporHmap.put("Basketbolda 3 adımdan fazla atılan adıma ne denir?","Steps");
tl.SporHmap.put("Hindistan'ın ulusal sporu nedir?","Kriket");
tl.SporHmap.put("Süper Lig'de hakeme kırmızı kart gösteren futbolcu kimdir?","Salih Dursun");
Spor.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
QuestionClass q = new QuestionClass();
q.getQFrame();
Object[] values = tl.SporHmap.values().toArray();
String randomValue = (String)values[r.nextInt(values.length)];
if(tl.SporHmap.get("Hindistan'ın ulusal sporu nedir?").equals(randomValue)){
q.label.setText("Hindistan'ın ulusal sporu nedir?");
q.answer1.setText("Kriket");
q.answer2.setText("Beyzbol");
q.answer3.setText("Hokey");
q.answer4.setText("Futbol");
tl.SporHmap.remove(randomValue);
q.answer1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "True Answer");
score.setText("Score: "+scr++);
q.getQFrame().dispose();
Spor.doClick();
}
});
q.answer3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Wrong Answer");
q.getQFrame().dispose();
Spor.doClick();
}
});
q.answer2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Wrong Answer");
q.getQFrame().dispose();
Spor.doClick();
}
});
q.answer4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Wrong Answer");
q.getQFrame().dispose();
Spor.doClick();
}
});
}
else if(tl.SporHmap.get("Basketbolda 3 adımdan fazla atılan adıma ne denir?").equals(randomValue)){
q.label.setText("Basketbolda 3 adımdan fazla atılan adıma ne denir?");
q.answer1.setText("Serbest atış");
q.answer2.setText("Dışarı çıkış");
q.answer3.setText("Steps");
q.answer4.setText("Faul");
tl.SporHmap.remove(randomValue);
q.answer3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "True Answer");
score.setText("Score: "+scr++);
q.getQFrame().dispose();
Spor.doClick();
}
});
q.answer1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Wrong Answer");
q.getQFrame().dispose();
Spor.doClick();
}
});
q.answer2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Wrong Answer");
q.getQFrame().dispose();
Spor.doClick();
}
});
q.answer4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Wrong Answer");
q.getQFrame().dispose();
Spor.doClick();
}
});
}
else if(tl.SporHmap.get("Süper Lig'de hakeme kırmızı kart gösteren futbolcu kimdir?").equals(randomValue)){
q.label.setText("Süper Lig'de hakeme kırmızı kart gösteren futbolcu kimdir?");
q.answer1.setText("Erkan Zengin");
q.answer2.setText("Özer Hurmacı");
q.answer3.setText("Salih Dursun");
q.answer4.setText("Aykut Demir");
tl.SporHmap.remove(randomValue);
q.answer3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "True Answer");
score.setText("Score: "+scr++);
q.getQFrame().dispose();
Spor.doClick();
}
});
q.answer1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Wrong Answer");
q.getQFrame().dispose();
Spor.doClick();
}
});
q.answer2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Wrong Answer");
q.getQFrame().dispose();
Spor.doClick();
}
});
q.answer4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Wrong Answer");
q.getQFrame().dispose();
Spor.doClick();
}
});
}
}
});
は私のQuestionClassクラスです:
import java.awt.GridLayout;
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.JOptionPane;
public class QuestionClass {
public JLabel label,label1;
public JFrame questionFrame;
public JButton answer1,answer2,answer3,answer4;
public QuestionClass() {
questionFrame = new JFrame();
questionFrame.setDefaultCloseOperation(questionFrame.HIDE_ON_CLOSE);
questionFrame.setLayout(new GridLayout(3,2));
questionFrame.setSize(700, 350);
questionFrame.setVisible(true);
questionFrame.setLocationRelativeTo(null);
label = new JLabel("");
questionFrame.add(label);
label1 = new JLabel("");
questionFrame.add(label1);
answer1 = new JButton("");
questionFrame.add(answer1);
answer2 = new JButton("");
questionFrame.add(answer2);
answer3 = new JButton("");
questionFrame.add(answer3);
answer4 = new JButton("");
questionFrame.add(answer4);
}
public JFrame getQFrame() {
return questionFrame;
}
}
私はこれを「問題解決済み」とします。迅速に受け入れていただきありがとうございます!では、問題は何でしたか? – GhostCat
**私は** tl.SporHmap.remove(randomValue); ** ** tl.SporHmap.remove( "Hindistan'ınulusal sporu nedir?")を**変更しました。あまり論理的ではないようですが、まだ問題はありません。また、私は** remove(randomValue)**の部分を** remove(....)**に変更する必要があります。 – afellay
それは...変です。しかし、何でも。あなたが解決策を見つけてうれしい。 – GhostCat