2016-07-13 7 views
0

Ich bin sehr neu in der Programmierung im Allgemeinen, aber ich lese halb durch dieses Buch "Kopf zuerst in Java". Es zeigt ein Beispiel an, das ich aufschreiben und kompilieren wollte, aber ich komme nicht über den Compiler hinaus. Meine valueChanged-Methode verbindet die Liste nicht mit go() mit "String selection = (String) list.getSelectedValue(); die" list "ist mit einer roten Linie unterstrichen und ich kann nicht die richtige Syntax bekommen, um die Hauptsyntax mit zu verknüpfen meine Zuhörer. Jede Hilfe wäre appriciated. `ActionListener keine Listen über Methoden hinweg

package Test1; 

import javax.swing.*; 
import javax.swing.event.ListSelectionEvent; 
import javax.swing.event.ListSelectionListener; 
import java.awt.*; 

public class GUi extends JPanel implements ListSelectionListener { 

    public static void main(String [] args){ 
     GUi gui = new GUi(); 
     gui.go(); 


    } 

    public void go() { 
     JFrame frame = new JFrame(); 
     JPanel panel = new JPanel(); 
     panel.setBackground(Color.DARK_GRAY); 
     panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); 
     JList list = new JList(); 
     String[] listEntries = {"alpha", "beta", "gamma", "delta", "epsilon", "zeta", "eta", "theta"}; 

     list = new JList(listEntries); 

     JScrollPane scroller = new JScrollPane(list); 
     scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 
     scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); 
     panel.add(scroller); 

     list.setVisibleRowCount(4); 
     list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
     list.addListSelectionListener(this); 

     frame.setSize(500, 500); 
     frame.setVisible(true); 
    } 

    public void valueChanged(ListSelectionEvent lse) { 
     if (!lse.getValueIsAdjusting()) { 
      String selection = (String) list.getSelectedValue(); 
      System.out.println(selection); 
     } 
    } 

} 

`

+3

Sie müssen sichtbar ist, um zu erfahren Bereich: Siehe: http://StackOverflow.com/questions/25706216/what-does-a-cannot-find-symbol-compilation-error-mean – azurefrog

+0

@azurefrog in Ordnung. aber wie definiere ich eine Liste, die in zwei Methoden auf einmal verwendet werden kann, wie go() und valueChanged()? –

+1

Dieser Fehler deutet darauf hin, dass Sie den Wagen möglicherweise vor das Pferd stellen. In der Regel wird empfohlen, die Grundlagen einer Sprache zu erlernen, z. B. das variable Scoping, bevor Sie die fortgeschrittenen Themen wie GUI-Programmierung angehen. Die Einführung in die Kapitel eines Java-Lehrbuchs oder die Einführungstutorials eines Java-Tutorials wären wahrscheinlich eine gute Zeit und würden Ihnen bei der zukünftigen GUI-Programmierung helfen. –

Antwort

0

nur die Liste als Klassenfeld hinzufügen, so dass es sowohl für Verfahren wie auf diese Weise

import javax.swing.*; 
import javax.swing.event.ListSelectionEvent; 
import javax.swing.event.ListSelectionListener; 
import java.awt.*; 

public class GUi extends JPanel implements ListSelectionListener { 

    JList list; 
    public static void main(String [] args){ 
     GUi gui = new GUi(); 
     gui.go(); 


    } 

    public void go() { 
     JFrame frame = new JFrame(); 
     JPanel panel = new JPanel(); 
     panel.setBackground(Color.DARK_GRAY); 
     panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); 
     String[] listEntries = {"alpha", "beta", "gamma", "delta", "epsilon", "zeta", "eta", "theta"}; 

     list = new JList(listEntries); 

     JScrollPane scroller = new JScrollPane(list); 
     scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 
     scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); 
     panel.add(scroller); 

     list.setVisibleRowCount(4); 
     list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
     list.addListSelectionListener(this); 

     frame.add(panel); 
     frame.setSize(500, 500); 
     frame.setVisible(true); 
    } 

    public void valueChanged(ListSelectionEvent lse) { 
     if (!lse.getValueIsAdjusting()) { 
      String selection = (String) list.getSelectedValue(); 
      System.out.println(selection); 
     } 
    } 

} 
+0

Das macht viel Sinn, ich müde, Liste in der Hauptmethode zu erklären, aber es ist immer noch fehlgeschlagen. Die richtige Methode zu wählen, hat den Trick geschafft! Danke vielmals :) –

Verwandte Themen