Toon posts:

Java vraag

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik weet niet of dit het goede forum is, omdat het Java bereft en geen Javascript, dus mods voel u vrij het topic te verplaatsen.

Ik heb een vraag over het halen van informatie uit een subclasse (refereren naar een niet-statisch veld vanuit een statische context).

De volgende code werkt gewoon:

code:
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
class Main {

    public static void main(String[] args) {
        new loadLevel();
    }

}


// *********************************************************************************
// Load files
// *********************************************************************************

class loadLevel extends JFrame implements ActionListener {

    public char[][] Board = new char[100][100];
    public char[][] Position = new char[100][100];
    public int selectedIndex = 0;
    String[] data = {"1", "2", "3", "4"};
    JComboBox myNumber = new JComboBox(data);

    public loadLevel() {
          super("Load File");
          setSize(300, 80);
          setLocationRelativeTo(null);
          setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

          myNumber.setPreferredSize(new Dimension(50,25));
          JLabel numberLabel = new JLabel("Level: ");
          JButton ok = new JButton("OK");
          ok.addActionListener( new ActionListener()
          {
              public void actionPerformed(ActionEvent e)
              {
                  int selectedIndex = myNumber.getSelectedIndex() + 1;
                  System.out.println(selectedIndex);
                  dispose();
              }
          });
          JButton cancel = new JButton("Cancel");
          cancel.addActionListener( new ActionListener()
          {
              public void actionPerformed(ActionEvent e)
              {
                  int selectedIndex = 0;
                  System.out.println(selectedIndex);
                  dispose();
              }
          });
          JPanel pane = new JPanel();
          pane.add(numberLabel);
          pane.add(myNumber);
          pane.add(ok);
          pane.add(cancel);
          add(pane);
          setVisible(true);
     }

     public void actionPerformed(ActionEvent event) {
     }

}


Echter, wat ik nu graag zou willen is de waarde die de gebruiker uit de combobox heeft geselecteerd (selectedIndex) "teruggeven" aan de main methode.

Daar heb ik al allerlei methoden voor geprobeerd, zoals:

code:
1
2
3
4
5
6
7
8
class Main {

    public static void main(String[] args) {
        new loadLevel();
        int number=loadLevel.selectedIndex;
    }

}


De regel "int number=loadLevel.selectedIndex;" (regel 5n) is de aanpassing.

Maar wat ik ook probeer (zoals hierboven, maar ook ingewikkeldere oplossingen), ik krijg altijd de foutmelding "niet-statisch veld (selectedIndex) kan niet gereferenced worden vanuit statische context".

Wie weet een oplossing hoe ik de waarde van in dit geval "selectedIndex" vanuit een statische methode kan benaderen?

Dank!

Acties:
  • 0 Henk 'm!

  • Lonua
  • Registratie: Maart 2016
  • Laatst online: 09-10 15:12
Je mist in je code de referentie naar het object. Niet static fields bestaan alleen op het object. Je probeert nu het veld op de klasse aan te roepen. En die bestaat dus niet. En daardoor de error.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dank!

[ Voor 96% gewijzigd door Verwijderd op 12-04-2017 01:01 ]