Beginnersvraag Java

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Plux
  • Registratie: Februari 2000
  • Laatst online: 04-10 18:15

Plux

Team KVM

Topicstarter
Mijn vraag
...

Hoi medetweakers,

ik ben bezig met n simpel java programmaatje om wat buttons weer te geven op een JFrame/Window. Ik ben begonnen met een lapje code uit een tutorial en heb daar uit een button tutorial weer wat code aan toegevoegd.. maar als ik het nu uitvoer in een willekeurige ondergenoemde IDE verschijnt er alleen een window met een label met tekst die ik heb weggecommentarieerd. De button code wordt niet niet goed uitgevoerd. Hieronder mijn code

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import java.awt.*;
import javax.swing.*; 

public class ToplevelWindow {
    
    private static void createWindow() {
 //Create and set up the window.b1
    JFrame frame = new JFrame("Simple GUI"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    Jbutton button = new JButton("Buy!");
//  button.setBounds(10,40,20,30);
//  JLabel textLabel = new JLabel("I'm a label in the window",SwingConstants.CENTER); textLabel.setPreferredSize(new Dimension(300, 100));
//  frame.getContentPane().add(textLabel, BorderLayout.CENTER); 
 
    
ImageIcon leftButtonIcon = createImageIcon("images/right.gif");

    JButton b1 = new JButton("Disable middle button", SwingConstants.CENTER);
    b1.setVerticalTextPosition(AbstractButton.CENTER);
    b1.setHorizontalTextPosition(AbstractButton.LEADING); //aka LEFT, for left-to-right locales
    b1.setMnemonic(KeyEvent.VK_D);
    b1.setActionCommand("disable");
    
    frame.getContentPane().add(button,BorderLayout.CENTER);


    //Listen for actions on buttons 1

    b1.setToolTipText("Click this button to disable "
                      + "the middle button.");
}

 //Display the window
    frame.setSize(300,300);
    frame.setLocationRelativeTo(null);
    frame.pack();
    frame.setVisible(true);
    
    public static void main (String[] args) {
        createWindow();
    

    }
}


Kan iemand zeggen waarom de label code nog wordt uitgevoerd en waarom de button code niet??
(er staat hier en daar nog wat code die ik alvast erbij had gevoegd voor probeer doeleinden)

Relevante software en hardware die ik gebruik

Geany, IntelliJ

Wat ik al gevonden of geprobeerd heb

wegcommentarieren, weghalen van de labelcode (Im a label in the window)
...

[ Voor 0% gewijzigd door Woy op 22-10-2019 15:41 ]

Maak er geen probleem van, of een oplossing!—- je moet niet zo moeilijk doen

Alle reacties


Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
frame.getContentPane().add(button,BorderLayout.CENTER);

Moet daar niet b1 staan ipv button?

Even snel zo uit mijn hoofd... heb al een tijdje geen Java en Swing meer gedaan. Maar dit vond ik opvallend :)

[edit]
Ik zie dat je ook nog een 'button' hebt. Sowieso voeg je maar 1 van de 2 toe?

[ Voor 17% gewijzigd door Lethalis op 22-10-2019 14:14 ]

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • Stoelpoot
  • Registratie: September 2012
  • Niet online
Hoogstwaarschijnlijk voer je een oude versie van je code uit, want hetgeen wat je hier post kan onmogelijk bouwen.

code:
1
2
// JLabel textLabel = new JLabel("I'm a label in the window",SwingConstants.CENTER);
textLabel.setPreferredSize(new Dimension(300, 100));


Hier gebruik je namelijk de variable textLabel terwijl die niet gedefinieerd is (want is uitgecommentarieerd). Dus bouwt je code niet, en voer je de laatste succesvolle build uit.

Overigens, gebruik aub code-tags:

code:
1
2
3
[code]
console.print("Hello World");
[/code]

Acties:
  • +1 Henk 'm!

  • zwiep
  • Registratie: November 2010
  • Laatst online: 21-09 09:34
Welke java versie gebruik je? Compileert dit?
Als ik deze code even snel overneem (met java 8 ) dan springt er vooral in het oog dat je voor b1 een JButton constructor gebruikt die ik in de documentatie nergens terug vind. Je voegt deze button ook nergens toe aan je frame.

Zoals al eerder gezegd zou ik nie weten waarom je een label ziet als deze uitgecommentarieerd is, waarschijnlijk run je een oudere (werkende) versie van je app.

Zelf ben ik geen held met swing, maar ik heb even getracht van je code gecompileerd te krijgen, kan je hier iets mee?:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import java.awt.*;
import java.awt.event.KeyEvent;
import javax.swing.*;

public class ToplevelWindow {

    private static void createWindow() {
//Create and set up the window.b1
        JFrame frame = new JFrame("Simple GUI");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new FlowLayout());
        frame.setSize(300, 300);
        frame.setVisible(true);

        JButton button = new JButton("Buy!");
        button.setBounds(10, 40, 20, 30);
        JLabel textLabel = new JLabel("I'm a label in the window");
        textLabel.setPreferredSize(new Dimension(300, 100));

        JButton b1 = new JButton("Disable middle button");
        button.setBounds(10, 40, 20, 30);
        b1.setVerticalTextPosition(AbstractButton.CENTER);
        b1.setHorizontalTextPosition(AbstractButton.LEADING); //aka LEFT, for left-to-right locales
        b1.setMnemonic(KeyEvent.VK_D);
        b1.setActionCommand("disable");
        b1.setToolTipText("Click this button to disable "
                + "the middle button.");

        frame.add(textLabel);
        frame.add(button);
        frame.add(b1);
//Listen for actions on buttons 1
    }

//Display the window

    public static void main(String[] args) {
        createWindow();


    }
}

[ Voor 66% gewijzigd door zwiep op 22-10-2019 16:00 ]


Acties:
  • 0 Henk 'm!

  • Plux
  • Registratie: Februari 2000
  • Laatst online: 04-10 18:15

Plux

Team KVM

Topicstarter
zwiep schreef op dinsdag 22 oktober 2019 @ 14:24:
Zoals al eerder gezegd zou ik nie weten waarom je een label ziet als deze uitgecommentarieerd is, waarschijnlijk run je een oudere (werkende) versie van je app.
dat dacht ik ook maar ik had de bestandsversie in de map al gechecked. hier n plaatje je ziet dat t bestand recent is..

java

ik gebruik java 8, jbutton is onderdeel van de swing library als ik het goed heb..

Maak er geen probleem van, of een oplossing!—- je moet niet zo moeilijk doen


Acties:
  • +1 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 03-10 23:11

DataGhost

iPL dev

Dat is je bronbestand A, niet het bestand B wat je uiteindelijk uitvoert. Als er compilatiefouten zijn (zoals in jouw code het geval is) blijft de laatst goed gecompileerde B bestaan. Als je de code in A aanpast verandert B niet zonder een succesvolle compile. Zaak is dus om de foutmeldingen te gaan lezen die je krijgt van je compiler en die op te lossen.
Zie het misschien zo, je hebt ergens een poster opgehangen en wilt er iets aan wijzigen. Je gaat terug naar je computer en past de poster daar aan. Aan de muur hangt nog steeds de oude versie. Je printer zegt nu van "jaaaa die meuk die ik nu krijg snap ik niks van" en print niks. Dan hangt aan de muur toch nog steeds de oude poster?

Acties:
  • 0 Henk 'm!

  • borft
  • Registratie: Januari 2002
  • Laatst online: 03-10 15:41
Plux schreef op dinsdag 22 oktober 2019 @ 14:52:
[...]


dat dacht ik ook maar ik had de bestandsversie in de map al gechecked. hier n plaatje je ziet dat t bestand recent is..

[Afbeelding: java]

ik gebruik java 8, jbutton is onderdeel van de swing library als ik het goed heb..
Misschien even googlen wat een compiler doet ;) Zoals hierboven al opgemerkt, compileert je aangepaste code waarschijnlijk niet, waardoor je nog steeds de oude bytecode runt, dus zonder je aanpassingen.

Acties:
  • 0 Henk 'm!

  • zwiep
  • Registratie: November 2010
  • Laatst online: 21-09 09:34
Ik vind het vreemd dat je IntelliJ geen fouten of warnings geeft op je code.
Java:
1
JButton b1 = new JButton("Disable middle button", SwingConstants.CENTER);

geeft bij mij fouten want er is in de documentatie (https://docs.oracle.com/javase/7/docs/api/javax/swing/JButton.html) geen constructor aanwezig die een String en een integer heeft als parameters. (dit is natuurlijk wel Java7, daarom dat ik naar je versie vraag)

Het feit dat jouw intellij geen fouten aangeeft doet mij eerder vermoeden dat je je java sdk daar nog niet hebt geconfigureerd. (File -> Project Structure -> Project SDK)

edit: ik weet ook niet helemaal wat je wil bereiken dus ik probeer maar eerst uit te gaan van werkende code. Je kan misschien even mijn versie erbij nemen en kijken wat ik anders heb moeten doen om het wel werkend gecompileerd te krijgen.

[ Voor 15% gewijzigd door zwiep op 22-10-2019 16:00 ]


Acties:
  • +1 Henk 'm!

  • Stoelpoot
  • Registratie: September 2012
  • Niet online
zwiep schreef op dinsdag 22 oktober 2019 @ 15:06:
Ik vind het vreemd dat je IntelliJ geen fouten of warnings geeft op je code.
code:
1
JButton b1 = new JButton("Disable middle button", SwingConstants.CENTER);

geeft bij mij fouten want er is in de documentatie (https://docs.oracle.com/javase/7/docs/api/javax/swing/JButton.html) geen constructor aanwezig die een String en een integer heeft als parameters. (dit is natuurlijk wel Java7, daarom dat ik naar je versie vraag)

Het feit dat jouw intellij geen fouten aangeeft doet mij eerder vermoeden dat je je java sdk daar nog niet hebt geconfigureerd. (File -> Project Structure -> Project SDK)
Hetzelfde geldt voor het gebruik van undefined variables wat ik al eerder aangaf :) Hoewel het uiteraard ook kan dat de squiggles genegeerd worden...

Acties:
  • +1 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
@Plux ik heb je code even in [code=java] tags gezet, dat maakt het een stuk leesbaarder. Doe dat in het vervolg zelf ook a.u.b.


Zoals hierboven al aangegeven lijkt het erop dat je code helemaal niet goed compileert, en dat er dus nog een oudere versie van je code uitgevoerd wordt. Het is denk verstandig om eerst je omgeving, instellingen en debug tools eens goed te controleren. Misschien negeer je ergens een foutmelding o.i.d.

Om logica fouten op te lossen is het verstandig om te zorgen dat je je step-through debugger goed weet te gebruiken.

Niet specifiek voor Java, maar kijk ook eens in onze FAQ: Programming FAQ - Algemeen

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1