Я перепробовал все возможные решения онлайн, но, похоже, ничего не работает. Я пытаюсь отобразить флаги для моей игры в угадывание флага. Я устанавливаю значок для JLabel flagIconJLabel в функции displayFlag () , но на самом деле он не показывает изображение флага при запуске программы. Я не вижу никаких ошибок, поэтому я застрял. Путь в порядке, я могу отображать изображения самостоятельно. Пожалуйста, помогите: /
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.*;
public class FlagQuiz extends JFrame{
private String[] countries = { "Russia", "China", "United States",
"Italy", "Australia", "South Africa", "Brazil", "Spain" };
private boolean[] flagsUsed = new boolean[countries.length];
private int currentIndex;
private int count = 1;
private JPanel flagJPanel;
private JLabel flagIconJLabel;
private JLabel selectCountryJLabel;
private JComboBox selectCountryJComboBox;
private JTextField feedbackJTextField;
private JButton submitJButton;
private JButton nextFlagJButton;
public FlagQuiz() {
createUserInterface();
}
private void createUserInterface(){
Container contentPane = getContentPane();
contentPane.setLayout(null);
flagJPanel = new JPanel();
flagJPanel.setBounds(16, 8, 100, 90);
flagJPanel.setLayout(null);
flagJPanel.setBorder(new TitledBorder("Flag"));
contentPane.add(flagJPanel);
flagIconJLabel = new JLabel();
flagIconJLabel.setBounds(10, 14, 80, 80);
flagIconJLabel.setHorizontalAlignment(JLabel.CENTER);
flagJPanel.add(flagIconJLabel);
selectCountryJLabel = new JLabel();
selectCountryJLabel.setBounds(136, 8, 88, 21);
selectCountryJLabel.setText("Select country:");
contentPane.add(selectCountryJLabel);
Arrays.sort(countries);
selectCountryJComboBox = new JComboBox(countries);
selectCountryJComboBox.setBounds(136, 32, 135, 21);
selectCountryJComboBox.setMaximumRowCount(3);
contentPane.add(selectCountryJComboBox);
displayFlag();
// set up feedbackJTextFiel
feedbackJTextField = new JTextField();
feedbackJTextField.setBounds(136, 64, 135, 32);
feedbackJTextField.setHorizontalAlignment(
JTextField.CENTER);
feedbackJTextField.setEditable(false);
contentPane.add(feedbackJTextField);
submitJButton = new JButton();
submitJButton.setBounds(287, 8, 88, 32);
submitJButton.setText("Submit");
contentPane.add(submitJButton);
submitJButton.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event){
submitJButtonActionPerformed(event);}}
);
// set up nextFlagJButton
nextFlagJButton = new JButton();
nextFlagJButton.setBounds(287, 48, 88, 32);
nextFlagJButton.setText("Next Flag");
nextFlagJButton.setEnabled(false);
contentPane.add(nextFlagJButton);
nextFlagJButton.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event){
nextFlagJButtonActionPerformed(event);}}
);
setTitle("Flag Quiz");
setSize(390, 135);
setVisible(true);
}
private int getUniqueRandomNumber(){
Random generator = new Random();
int randomNumber;
do{
randomNumber = generator.nextInt(8);}
while (flagsUsed[randomNumber] == true);
flagsUsed[randomNumber] = true;
return randomNumber; }
private void displayFlag(){
currentIndex = getUniqueRandomNumber();
String country =
(String) selectCountryJComboBox.getItemAt(currentIndex);
String countryPath = "images/" + country + ".png";
flagIconJLabel.setIcon(new ImageIcon(countryPath));}
private void submitJButtonActionPerformed(ActionEvent event){
if (selectCountryJComboBox.getSelectedIndex()
== currentIndex){
feedbackJTextField.setText("Correct!");}
else{
feedbackJTextField.setText("Sorry, incorrect.");}
if (count == 5){
feedbackJTextField.setText(
feedbackJTextField.getText() + " Done!");
nextFlagJButton.setEnabled(false);
submitJButton.setEnabled(false);
selectCountryJComboBox.setEnabled(false); }
else{
submitJButton.setEnabled(false);
nextFlagJButton.setEnabled(true);}}
private void nextFlagJButtonActionPerformed(ActionEvent event){
displayFlag();
count++;
feedbackJTextField.setText("");
selectCountryJComboBox.setSelectedIndex(0);
submitJButton.setEnabled(true);
nextFlagJButton.setEnabled(false);}
public static void main(String[] args){
FlagQuiz application = new FlagQuiz();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}