Я хочу сделать викторину с вопросами и уникальным изображением для каждого вопроса.Например,
![enter image description here](https://i.stack.imgur.com/lMrG4.png)
Не знаю почему, но в окнах с вопросами нет изображений.Например, в окне с вопросом «Какая столица Нидерландов?» Отсутствует изображение «information.jpg» из файла «Quiz.java». Как я могу поместить изображения в окнах с вопросами, поставить уникальное изображение для каждого вопроса?Пожалуйста, помогите
Когда я выбрал папку с изображениями book.jpg, science.jpg, wisdom.jpg: C: \ Users \ syuye \ eclipse-workspace \ test \ src \ test,появилось сообщение об ошибке
![enter image description here](https://i.stack.imgur.com/o2hpU.png)
Поэтому я сохранил файл как utf-8.Может, это как-то повлияло?
на c0der: Да, я добавил e.printStackTrace (); :
JLabel picLabel = new JLabel(new ImageIcon(myPicture));
img.add(picLabel);
add(img);
} catch (Exception e) {e.printStackTrace();}
Возникают ошибки:
javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(Unknown Source)
at test.RadioQuestion.<init>(RadioQuestion.java:61)
at test.Quiz.<init>(Quiz.java:42)
at test.Quiz.main(Quiz.java:90)
javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(Unknown Source)
at test.RadioQuestion.<init>(RadioQuestion.java:61)
at test.Quiz.<init>(Quiz.java:47)
at test.Quiz.main(Quiz.java:90)
javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(Unknown Source)
at test.RadioQuestion.<init>(RadioQuestion.java:61)
at test.Quiz.<init>(Quiz.java:52)
at test.Quiz.main(Quiz.java:90)
javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(Unknown Source)
at test.RadioQuestion.<init>(RadioQuestion.java:61)
at test.Quiz.<init>(Quiz.java:57)
at test.Quiz.main(Quiz.java:90)
javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(Unknown Source)
at test.RadioQuestion.<init>(RadioQuestion.java:61)
at test.Quiz.<init>(Quiz.java:62)
at test.Quiz.main(Quiz.java:90)
javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(Unknown Source)
at test.RadioQuestion.<init>(RadioQuestion.java:61)
at test.Quiz.<init>(Quiz.java:67)
at test.Quiz.main(Quiz.java:90)
javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(Unknown Source)
at test.RadioQuestion.<init>(RadioQuestion.java:61)
at test.Quiz.<init>(Quiz.java:72)
at test.Quiz.main(Quiz.java:90)
javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(Unknown Source)
at test.RadioQuestion.<init>(RadioQuestion.java:61)
at test.Quiz.<init>(Quiz.java:77)
at test.Quiz.main(Quiz.java:90)
javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(Unknown Source)
at test.RadioQuestion.<init>(RadioQuestion.java:61)
at test.Quiz.<init>(Quiz.java:82)
at test.Quiz.main(Quiz.java:90)
Файл Quiz.java
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.CardLayout;
import java.util.Random;
import javax.swing.JOptionPane;
import javax.imageio.*;
import java.io.*;
public class Quiz extends JFrame{
JPanel p=new JPanel();
CardLayout cards=new CardLayout();
int numQs;
int wrongs=0;
int total=0;
String[][] answers={
{"Enschede","Amsterdam","Den Haag","Berlin"},
{"Slang for Hankechief","Dutch for Keyboard","A Male Sheep","Width of a Cut"},
{"Euler","Erasmus","Fibonnaci","Archemides"},
{"Shadow of the Collosus","Lighthouse of Alexandria","Colliseum","Parthanon"},
{"Cars","Nothing","Planes","Plastic Materials"},
{"True","False"},
{"True","False"},
{"4","5","6","7"},
{"The Lion King","Hamlet","Death of The Salesmen","Phantom of the Opera"},
};
String images[] = {
"1. information.jpg",
"2.science.jpg",
"3.wisdom.jpg",
};
RadioQuestion questions[]={
new RadioQuestion(
"What is the capital of the Netherlands?",
answers[0],
1,this
),
new RadioQuestion(
"What is a kerf?",
answers[1],
3,this
),
new RadioQuestion(
"Who discovered the number e?",
answers[2],
0,this
),
new RadioQuestion(
"Which of the following is one of the 7 wonders of the ancient world?",
answers[3],
1,this
),
new RadioQuestion(
"Which of the following is not made in China?",
answers[4],
1,this
),
new RadioQuestion(
"True or False, Driving drunk is more dangerous than driving tired",
answers[5],
1,this
),
new RadioQuestion(
"True or False, The Platypus is a mammal",
answers[6],
0,this
),
new RadioQuestion(
"How many strings are there on a standard guitar?",
answers[7],
2,this
),
new RadioQuestion(
"Which of these plays is made by shakespeare?",
answers[8],
1,this
)
};
public static void main(String args[]){
new Quiz();
}
public Quiz(){
super("Quiz Game");
setResizable(true);
setSize(500,400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
p.setLayout(cards);
numQs=questions.length;
for(int i=0;i<numQs;i++){
p.add(questions[i],"q"+i);
}
Random r=new Random();
int i=r.nextInt(numQs);
cards.show(p,"q"+i);
add(p);
setVisible(true);
}
public void next(){
if((total-wrongs)==numQs){
showSummary();
}else{
Random r=new Random();
boolean found=false;
int i=0;
while(!found){
i=r.nextInt(numQs);
if(!questions[i].used){
found=true;
}
}
cards.show(p,"q"+i);
}
}
public void showSummary(){
JOptionPane.showMessageDialog(null,"All Done :), here are your results"+
"\nNumber of incorrect Answers: \t"+wrongs+
"\nNumber of Correct Answers: \t"+(total-wrongs)+
"\nAverage Incorrect Answers per Quesiotn: \t"+((float)wrongs/numQs)+
"\nPercent Correct: \t\t"+(int)(((float)(total-wrongs)/total)*100)+"%"
);
System.exit(0);
}
}
Файл RadioQuestion.java
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.ButtonGroup;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;
import javax.imageio.*;
import java.io.*;
public class RadioQuestion extends JPanel implements ActionListener{
int correctAns;
Quiz quiz;
int selected;
boolean used;
//questions
JPanel qPanel=new JPanel();
//answers
JPanel aPanel=new JPanel();
JRadioButton[] responses;
ButtonGroup group=new ButtonGroup();
//bottom
JPanel botPanel=new JPanel();
JButton next=new JButton("Next");
JButton finish=new JButton("Finish");
/*public static void main(String args[]){
JFrame frame=new JFrame("RadioButton Test");
frame.setSize(400,300);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setResizable(true);
String[] answers={"wrong1","right","wrong2"};
frame.add(new RadioQuestion("what's right?",answers,1));
frame.setVisible(true);
}*/
public RadioQuestion(String q, String[] options, int ans, Quiz quiz){
this.quiz=quiz;
setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
correctAns=ans;
//question
qPanel.add(new JLabel(q));
add(qPanel);
//answer
responses=new JRadioButton[options.length];
try{
JPanel img = new JPanel();
BufferedImage myPicture = ImageIO.read(new File("C:\Users\syuye\eclipse-workspace\test\src\test"));
JLabel picLabel = new JLabel(new ImageIcon(myPicture));
img.add(picLabel);
add(img);
} catch (Exception e) {e.printStackTrace();}
for(int i=0;i<options.length;i++){
responses[i]=new JRadioButton(options[i]);
responses[i].addActionListener(this);
group.add(responses[i]);
aPanel.add(responses[i]);
}
add(aPanel);
//bottom
next.addActionListener(this);
finish.addActionListener(this);
botPanel.add(next);
botPanel.add(finish);
add(botPanel);
}
public void actionPerformed(ActionEvent e){
Object src=e.getSource();
//next button
if(src.equals(next)){
showResult();
if(selected==correctAns){
used=true;
quiz.next();
}
}
//finish button
if(src.equals(finish)){
quiz.showSummary();
}
//radio buttons
for(int i=0;i<responses.length;i++){
if(src==responses[i]){
selected=i;
}
}
}
public void showResult(){
String text=responses[selected].getText();
quiz.total++;
if(selected==correctAns){
JOptionPane.showMessageDialog(null,text+" is correct\nWell Done :)");
}else{
quiz.wrongs++;
JOptionPane.showMessageDialog(null,text+" is wrong\nSorry :(");
}
}
}