Java-kod vill inte fungera.
Hej!
Jag har börjat en kurs i programmering på gymnasiet och har stött på ett problem.
Som ni förstår så har jag vääääldigt lite kunskap och jag stöter ofta på massa problem när jag försöker "Compile:a".
Det är första gången som jag är i denna delen av SC forum och igen, jag har bara läst en termin så jag är allt annat än bra.
Så här är mitt problem:
Jag har börjat på ett litet spel "sten, sax, påse" och har skrivit ihop en liten kod men jag får det inte att fungera.
Jag får felmeddelandet "local variable StenLose1 is accessed from within inner class needs to be declared final" men jag har deklarerat "StenLose1" som "final" (tror jag).
Spelet är långt ifrån färdigt men det skulle vara väldigt bra om jag kunde komma förbi det här problemet först innan jag arbetade vidare.
Är det någon här på SC som kan hjälpa mig?
KOD:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Grafik extends JFrame
{
private final JLabel StatsJLabel;
private final JLabel Null1JLabel;
private final JLabel Null2JLabel;
private final JLabel StenJLabel;
private final JLabel SaxJLabel;
private final JLabel PåseJLabel;
private final JButton StenJButton;
private final JButton SaxJButton;
private final JButton PåseJButton;
private int NPC, PLAYER;
private final ImageIcon StenWin1;
private final ImageIcon SaxWin1;
private final ImageIcon PåseWin1;
private final ImageIcon StenLose1;
private final ImageIcon SaxLose1;
private final ImageIcon PåseLose1;
private final ImageIcon StenWin2;
private final ImageIcon SaxWin2;
private final ImageIcon PåseWin2;
private final ImageIcon StenLose2;
private final ImageIcon SaxLose2;
private final ImageIcon PåseLose2;
/**
* Constructor for objects of class Grafik
*/
public Grafik()
{
setLayout(new GridLayout(3,3));
ImageIcon Sten1, Sten2, Sax1, Sax2, Påse1, Påse2, StenWin1, SaxWin1, PåseWin1, StenLose1, SaxLose1, PåseLose1, StenWin2, SaxWin2, PåseWin2, StenLose2, SaxLose2, PåseLose2;
int stats, null1, null2;
Sten1 = new ImageIcon("C:\\Users\\Hule.WINDOWS-1ACDU8L\\Pictures\\sten1.png");
Sax1 = new ImageIcon("C:\\Users\\Hule.WINDOWS-1ACDU8L\\Pictures\\sax1.png");
Påse1 = new ImageIcon("C:\\Users\\Hule.WINDOWS-1ACDU8L\\Pictures\\påse1.png");
Sten2 = new ImageIcon("C:\\Users\\Hule.WINDOWS-1ACDU8L\\Pictures\\sten2.png");
Sax2 = new ImageIcon("C:\\Users\\Hule.WINDOWS-1ACDU8L\\Pictures\\sax2.png");
Påse2 = new ImageIcon("C:\\Users\\Hule.WINDOWS-1ACDU8L\\Pictures\\påse2.png");
StenWin1 = new ImageIcon("C:\\Users\\Hule.WINDOWS-1ACDU8L\\Pictures\\stenWin1.png");
SaxWin1 = new ImageIcon("C:\\Users\\Hule.WINDOWS-1ACDU8L\\Pictures\\saxWin1.png");
PåseWin1 = new ImageIcon("C:\\Users\\Hule.WINDOWS-1ACDU8L\\Pictures\\påseWin1.png");
StenLose1 = new ImageIcon("C:\\Users\\Hule.WINDOWS-1ACDU8L\\Pictures\\stenLose1.png");
SaxLose1 = new ImageIcon("C:\\Users\\Hule.WINDOWS-1ACDU8L\\Pictures\\saxLose1.png");
PåseLose1 = new ImageIcon("C:\\Users\\Hule.WINDOWS-1ACDU8L\\Pictures\\påseLose1.png");
StenWin2 = new ImageIcon("C:\\Users\\Hule.WINDOWS-1ACDU8L\\Pictures\\stenWin2.png");
SaxWin2 = new ImageIcon("C:\\Users\\Hule.WINDOWS-1ACDU8L\\Pictures\\saxWin2.png");
PåseWin2 = new ImageIcon("C:\\Users\\Hule.WINDOWS-1ACDU8L\\Pictures\\påseWin2.png");
StenLose2 = new ImageIcon("C:\\Users\\Hule.WINDOWS-1ACDU8L\\Pictures\\stenLose2.png");
SaxLose2 = new ImageIcon("C:\\Users\\Hule.WINDOWS-1ACDU8L\\Pictures\\saxLose2.png");
PåseLose2 = new ImageIcon("C:\\Users\\Hule.WINDOWS-1ACDU8L\\Pictures\\påseLose2.png");
StenJLabel = new JLabel (Sten2, SwingConstants.CENTER);
getContentPane().add(StenJLabel);
SaxJLabel = new JLabel (Sax2, SwingConstants.CENTER);
getContentPane().add(SaxJLabel);
PåseJLabel = new JLabel (Påse2, SwingConstants.CENTER);
getContentPane().add(PåseJLabel);
StenJButton = new JButton(Sten1);
getContentPane().add(StenJButton);
SaxJButton = new JButton(Sax1);
getContentPane().add(SaxJButton);
PåseJButton = new JButton(Påse1);
getContentPane().add(PåseJButton);
Null1JLabel = new JLabel("", SwingConstants.CENTER);
Null1JLabel.setSize(75,5);
getContentPane().add(Null1JLabel);
StatsJLabel = new JLabel(NPC + " - " + PLAYER, SwingConstants.CENTER);
StatsJLabel.setFont(new Font("", Font.PLAIN, 10));
StatsJLabel.setSize(75,5);
getContentPane().add(StatsJLabel);
Null2JLabel = new JLabel("", SwingConstants.CENTER);
Null2JLabel.setSize(75,5);
getContentPane().add(Null2JLabel);
StenJLabel = new JLabel(Sten2);
getContentPane().add(StenJButton);
SaxJLabel = new JLabel(Sax2);
getContentPane().add(SaxJButton);
PåseJLabel = new JLabel(Påse2);
getContentPane().add(PåseJButton);
ActionListener lisClick = new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
int Slump = (int)(Math.random() * 3)+1; // Slumpar tal i intervallet 1-3.
if(ae.getSource() == StenJButton)
{
if(Slump==1)
{
StenJLabel.setIcon(StenLose1);
StenJButton.setIcon(StenLose2);
}
if(Slump==2)
{
SaxJLabel.setIcon(SaxLose1);
StenJButton.setIcon(StenWin2);
}
if(Slump==3)
{
StenJLabel.setIcon(PåseWin1);
StenJButton.setIcon(StenLose2);
}
}
if(ae.getSource() == SaxJButton)
{
if(Slump==1)
{
StenJLabel.setIcon(StenWin1);
SaxJButton.setIcon(SaxLose2);
}
if(Slump==2)
{
SaxJLabel.setIcon(SaxLose1);
SaxJButton.setIcon(SaxLose2);
}
if(Slump==3)
{
PåseJLabel.setIcon(PåseLose);
SaxJButton.setIcon(SaxLose);
}
}
if(ae.getSource() == PåseJButton)
{
if(Slump==1)
{
StenJLabel.setIcon(StenLose1);
PåseJButton.setIcon(PåseWin2);
}
if(Slump==2)
{
StenJLabel.setIcon(SaxWin1);
PåseJButton.setIcon(PåseLose2);
}
if(Slump==3)
{
PåseJLabel.setIcon(PåseLose1);
PåseJButton.setIcon(PåseLose2);
}
}
repaint();
}
};
StenJButton.addActionListener(lisClick);
SaxJButton.addActionListener(lisClick);
PåseJButton.addActionListener(lisClick);
setSize(new Dimension(473, 470));
setResizable(false);
setTitle("Sten, Sax, Påse!");
}
/**
* An example of a method - replace this comment with your own
*
* @param y a sample parameter for a method
* @return the sum of x and y
*/
public static void main ()
{
// put your code here
Grafik frame = new Grafik();
frame.setVisible(true);
}
}
Allt är skrivet med "BlueJ".
EDIT: Det ingår en del bilder i 'programmet' men jag tror inte dom behövs för att kompilera.