webForumDet fria alternativet

JLabel - "Not a statement" vid kompilering

8 svar · 715 visningar · startad av Mattias

MattiasMedlem sedan mars 2000203 inlägg
#1

Har nyss satt igång med att lära mig grunderna i Java och använder boken "Java direkt med Swing" av Jan Skansholm. Där finns en exempelkod som öppnar ett fönster med en text i, men trots att jag (vad jag kan se) följer angiven kod så får jag en massa fel vid kompilering. Detta är koden:

import java.awt.*;
import javax.swing.*;

public class Halsning {
	public static void main (String[] arg) {
	           Direkt2 d2 = new Direkt2();
	}
}

class Direkt2 extends JFrame {
	
	public Direkt2() {
		
		JLabel 1 new JLabel("Haj", JLabel.CENTER);
		
		getContentPane().add(1);
		1.setOpaque(true);
		1.setBackground(Color.yellow);
		1.setForeground(Color.blue);
		1.setFont(new Font("SansSerif", Font.BOLD, 24));
		setSize(400,150);
		setVisible(true);
		setDefaultCloseOperation(EXIT_ON_CLOSE);	}
}

Felen verkar vara relaterade till JLabel och ser ut som följer:

C:\jtest\Halsning.java:19: not a statement
		JLabel 1 new JLabel("Haj", JLabel.CENTER);
                ^
C:\jtest\Halsning.java:19: ';' expected
		JLabel 1 new JLabel("Haj", JLabel.CENTER);
                       ^
C:\jtest\Halsning.java:22: not a statement
		1.setOpaque(true);
                ^
C:\jtest\Halsning.java:22: ';' expected
		1.setOpaque(true);
                  ^
C:\jtest\Halsning.java:23: not a statement
		1.setBackground(Color.yellow);
                ^
C:\jtest\Halsning.java:23: ';' expected
		1.setBackground(Color.yellow);
                  ^
C:\jtest\Halsning.java:24: not a statement
		1.setForeground(Color.blue);
                ^
C:\jtest\Halsning.java:24: ';' expected
		1.setForeground(Color.blue);
                  ^
C:\jtest\Halsning.java:25: not a statement
		1.setFont(new Font("SansSerif", Font.BOLD, 24));
                ^
C:\jtest\Halsning.java:25: ';' expected

		1.setFont(new Font("SansSerif", Font.BOLD, 24));
                  ^
C:\jtest\Halsning.java:21: cannot resolve symbol
symbol  : method add  (int)
location: class java.awt.Container
		getContentPane().add(1);
                              ^
11 errors

Jag skickade nyss koden till en kompis som också får kompileringsfil. Därför undrar jag vad dessa fel kan bero på?

SPiNMedlem sedan mars 20005 832 inlägg
#2

JLabel 1 new JLabel("Haj", JLabel.CENTER);

Två fel här. Du försöker ha en siffra som variabelnamn och du har inget tilldelningstecken ( = ).

För att lösa det:

JLabel label = new JLabel( "Haj", JLabel.CENTER );
ViktorMedlem sedan aug. 20021 710 inlägg
#3

Ändra detta

JLabel 1 new JLabel("Haj", JLabel.CENTER);

till

JLabel one = new JLabel("Haj", JLabel.CENTER);

så ska det nog fungera. Du ska/kan inte ha siffror som variabel namn och du måste tilldela variabeln "new JLabel("Haj", JLabel.CENTER);" det är därför du måste ha "=" också.

/Viktor

SPiNMedlem sedan mars 20005 832 inlägg
#4

Du är alltid en minut efter, Viktor. §e ;)

ViktorMedlem sedan aug. 20021 710 inlägg
#5

Det är lättare när du ligger i skogen och leker krig, då är jag alltid före dig ;)

/Viktor

MattiasMedlem sedan mars 2000203 inlägg
#6

Ok, nu gick det bra att kompilera. Likhetstecknet hade jag glömt att sätta ut av rent slarv, men det intressanta är ett det inte går att använda siffror som variabler, vilket alltså Skansholm gör i bokens exempel. Konstigt att detta fel inte står angivet under "rättelser" på bokens hemsida.

Hur som helst... Tack för hjälpen, SPiN och Viktor!

Jörgen HPMedlem sedan feb. 20012 179 inlägg
#7

Hej!

Tråden flyttas till Java-forumet under OS & Program.

Vänligen Jörgen HP
Moderator

nicclasMedlem sedan feb. 20001 061 inlägg
#8

Det är möjligen inte så att det är ett litet L i boken? De brukar vara förvillande lika ettor...

MattiasMedlem sedan mars 2000203 inlägg
#9

Hmm... Jo, nu när du säger det. Det stämmer att det är ett litet L. Lite slarvigt av mig att inte tänka på det, men som du säger så är L:et väldigt lik en etta.

Genererad på 374 ms · cache AV · v20260730165559-full.f96bc7eb