Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hi,
ich arbeite erst seit 3 Tagen wieder mit Java, da ich an einem kleinen Projekt an meiner Hochschule mitarbeite. (Kein Informatik Studium)
Ein Teil meiner Aufgabe besteht darin, das passende Programm zu schreiben.
Was erklärt, was mich zu euch führt.
In der Schule haben wir im Informatikunterricht mit Java gearbeitet, darum habe ich mich wieder für Java entschieden. Das ist allerdings alles schon wieder so lange her, so das ich mich wieder als totalen Neuling einstufen würde.
Momentan habe ich mir 2 Bücher ausgeliehen, um mich reinzuarbeiten außerdem habe ich in den letzten Tagen verschiedene user Tutorials, hier im Forum durchgearbeitet.
Vorneweg, schon mal Danke dafür an die Autoren, die meisten waren wirklich sehr Hilfreich.
Da ich immer wieder auf Fragen stoße, die ich auch nach mehrstündiger Recherche nicht lösen kann,
habe ich diesen thread geöffnet.
Es wäre nett, wenn ich hier, im laufe der nächsten Wochen/Monate immer wieder Fragen reinstellen darf.
(Ich halte es für unsinnig immer einen neuen thread zu öffnen, außerdem sind dann womögliche spätere Fragen nicht vollständig aus dem Zusammenhang gerissen)
tl;dr: BlaBlaBla Ich brauche ab und zu Hilfe
Ich werde meine erste Frage unter diesen Post setzten, so das eine gewisse Struktur eingehalten wird.
Mach besser für jede Frage nen separaten Thread auf, dann hast du bessere Chancen auf Antworten. Außerdem ist es übersichtlicher, und ein anderer findet vielleicht auch ne Lösung zu seinem Problem.
Heute wollte ich die ActionListener implementieren, oder sie zumindest verstehen.
Eigentlich hatte ich etwas anderes vor, was nicht geklappt hat, weswegen ich versucht habe meinen Fehler auf mein Problem zu fokussieren, so das es auch jedem leichter fällt meine Frage nachzuvollziehen.
Hier mein bisheriger code
Java:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class hauptfenstertestd extends JFrame
{
/**
*
*/
private static final long serialVersionUID = 1L;
Container c;
JPanel jpnorth, jpeast, jpsouth, jpwest, jpcenter;
//Toolbar einfügen
JMenuBar menuBar;
JMenu menu;
JMenuItem menuItem;
JToolBar toolbar;
//Versuch listener einzufügen
JButton objekteinlesenbutton;
String wechselwestlayout ="leer";
public hauptfenstertestd()
{
c = getContentPane();
//(this.wechselwestlayout = wechselwestlayout; ???
jpnorth = new JPanel();
jpeast = new JPanel();
jpsouth = new JPanel(new GridLayout(1,4));
//Menüleiste erzeugen
menuBar = new JMenuBar();
//Erzeuge menu
menu = new JMenu("Ansicht");
menu.setMnemonic(KeyEvent.VK_A);
//menu einträge erzeugen
menuItem = new JMenuItem("Detail");
menuItem.setMnemonic(java.awt.event.KeyEvent.VK_D);
menu.add(menuItem);
menuItem = new JMenuItem("Liste");
menuItem.setMnemonic(java.awt.event.KeyEvent.VK_L);
menu.add(menuItem);
//menu der leiste hinzufügen
menuBar.add(menu);
//Leiste dem Frame hinzufügen
setJMenuBar(menuBar);
jpnorth.add(new JLabel("Objekte werden gesucht"));
Icon bild = new ImageIcon("1" + ".png");
jpeast.add(new JLabel(bild));
//Listener für diesen Button - Teil des Problems
//Versuch die listener einzufügen
objekteinlesenbutton = new JButton("Objekt einlesen");
jpsouth.add(objekteinlesenbutton);
ObjekteinlesenbuttonListenerklasse obL = new ObjekteinlesenbuttonListenerklasse();
objekteinlesenbutton.addActionListener(obL);
jpsouth.add(new JButton("Objekte suchen"));
jpsouth.add(new JButton("Zurück"));
jpsouth.add(new JButton("Weiter"));
//Box 1
Box jpwest1 = Box.createVerticalBox();
JLabel name = new JLabel("Name");
jpwest1.add(name);
name.setAlignmentY(Component.LEFT_ALIGNMENT);
name.setAlignmentX(Component.LEFT_ALIGNMENT);
JLabel rfidnummer = new JLabel("RFID Nummer");
jpwest1.add(rfidnummer);
rfidnummer.setAlignmentY(Component.LEFT_ALIGNMENT);
rfidnummer.setAlignmentX(Component.LEFT_ALIGNMENT);
JLabel barcodenummer = new JLabel("Barcodenummer");
jpwest1.add(barcodenummer);
barcodenummer.setAlignmentY(Component.LEFT_ALIGNMENT);
barcodenummer.setAlignmentX(Component.LEFT_ALIGNMENT);
JLabel archivnummer = new JLabel("Archivnummer");
jpwest1.add(archivnummer);
archivnummer.setAlignmentY(Component.LEFT_ALIGNMENT);
archivnummer.setAlignmentX(Component.LEFT_ALIGNMENT);
JLabel ort = new JLabel("Aufenthaltsort");
jpwest1.add(ort);
ort.setAlignmentY(Component.LEFT_ALIGNMENT);
ort.setAlignmentX(Component.LEFT_ALIGNMENT);
JLabel datum = new JLabel("Letzte Ortung");
jpwest1.add(datum);
datum.setAlignmentY(Component.LEFT_ALIGNMENT);
datum.setAlignmentX(Component.LEFT_ALIGNMENT);
jpwest1.add(Box.createVerticalStrut(500));
jpwest1.setBorder(BorderFactory.createEmptyBorder(5,15,1000,15));
//muss noch Box 2 mit doppelPanel Schleife um Textfelder sichtbar oder unsichtbar zu machen in abhängigkeit von Objekt suchen
Box jpwest2 = Box.createVerticalBox();
JLabel obname = new JLabel(wechselwestlayout);
jpwest2.add(obname);
obname.setAlignmentY(Component.RIGHT_ALIGNMENT);
obname.setAlignmentX(Component.RIGHT_ALIGNMENT);
JLabel obrfidnummer = new JLabel("wird gesucht");
jpwest2.add(obrfidnummer);
obrfidnummer.setAlignmentY(Component.RIGHT_ALIGNMENT);
obrfidnummer.setAlignmentX(Component.RIGHT_ALIGNMENT);
JLabel obbarcodenummer = new JLabel("wird gesucht");
jpwest2.add(obbarcodenummer);
obbarcodenummer.setAlignmentY(Component.RIGHT_ALIGNMENT);
obbarcodenummer.setAlignmentX(Component.RIGHT_ALIGNMENT);
JLabel obarchivnummer = new JLabel("wird gesucht");
jpwest2.add(obarchivnummer);
obarchivnummer.setAlignmentY(Component.RIGHT_ALIGNMENT);
obarchivnummer.setAlignmentX(Component.RIGHT_ALIGNMENT);
JLabel obort = new JLabel("wird gesucht");
jpwest2.add(obort);
obort.setAlignmentY(Component.RIGHT_ALIGNMENT);
obort.setAlignmentX(Component.RIGHT_ALIGNMENT);
JLabel obdatum = new JLabel("wird gesucht");
jpwest2.add(obdatum);
obdatum.setAlignmentY(Component.RIGHT_ALIGNMENT);
obdatum.setAlignmentX(Component.RIGHT_ALIGNMENT);
jpwest2.add(Box.createVerticalStrut(500));
jpwest2.setBorder(BorderFactory.createEmptyBorder(5,15,1000,15));
//BOX für Westen
Box box = Box.createHorizontalBox();
box.add(Box.createHorizontalStrut(5));
box.add(jpwest1);
box.add(jpwest2);
box.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
getContentPane().add(box, BorderLayout.WEST);
c.add(jpnorth,BorderLayout.NORTH);
c.add(jpeast,BorderLayout.CENTER);
c.add(jpsouth, BorderLayout.SOUTH);
}
//Klasse für den Listener vermutlich Teil des Problems
//Klasse mit anweisungen für listener
class ObjekteinlesenbuttonListenerklasse implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
wechselwestlayout = "jetzt nicht mehr";
}
}
public static void main (String []args)
{
hauptfenstertestd fenster = new hauptfenstertestd();
fenster.setTitle("RFID Finder");
fenster.setSize(900,700);
fenster.setVisible(true);
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Hauptproblem ist momentan, das ich es nicht schaffe das sich die variable wechselwestlayout,
die ich später für etwas anderes benutzen möchte, nicht ihren Inhalt ändert.
Ich habe zitiere nochmal den Teil des Codes, wo mmn der Fehler liegen könnte.
Java:
//Listener für diesen Button - Teil des Problems
//Versuch die listener einzufügen
objekteinlesenbutton = new JButton("Objekt einlesen");
jpsouth.add(objekteinlesenbutton);
ObjekteinlesenbuttonListenerklasse obL = new ObjekteinlesenbuttonListenerklasse();
objekteinlesenbutton.addActionListener(obL);
und
Java:
//Klasse für den Listener vermutlich Teil des Problems
//Klasse mit anweisungen für listener
class ObjekteinlesenbuttonListenerklasse implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
wechselwestlayout = "jetzt nicht mehr";
}
}
ich habe auch schon versucht, die variable zurück zu geben, ohne einen eigenen actionlistener zu bauen, aber auch das hat nicht funktioniert.
Außerdem wurde in verschiedenen threads davon geredet this zu benutzen, ich weiß aber leider nicht wo. So wie ich das sehe, wird da einfach nichts übergeben, was mich wundert,
weil hier klappt es z.B.
Beispiel Programm:
Java:
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Versuch {
public int Variabel = 0;
public static void main(String[] args) {
Versuch demo = new Versuch( );
demo.gui();
}
public void gui ()//Erstellt ein einfaches GUI mit 2 Buttons
{
// Fenster erstellen
JFrame fenster = new JFrame("Fenster mit Menuleiste");
fenster.setSize(1000, 500);
fenster.setVisible(true);
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Beim schliessen des Fensters --> Programm beenden
//Panel
Panel panel= new Panel();
fenster.add(panel);
// Button1
JButton Button1 = new JButton("+3");
panel.add(Button1);
//Button2
JButton Button2 = new JButton("-3");
panel.add(Button2);
//Action
Button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Variabel = Variabel + 3;
System.out.println("Ich addiere der Variabel 3 und dies gibt den neuen Wert der Variabel = " +Variabel);// Zur Kontrolle den Wert ausgeben
}});
Button2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Variabel = Variabel -3;
System.out.println("Ich addiere der Variabel -3 und dies gibt den neuen Wert der Variabel = " +Variabel);// Zur Kontrolle den Wert ausgeben
}});
}
}
wieso sich hier die variable ändert und oben nicht.
So, nächste mal versuch ich aber weniger zu schreiben.
Wenn mir jemand hilft, da auch gerne mit kurzer Erklärung.
Danke im vorraus.
Ja, danke hat geklappt.
(kleine Anmerkung, ich musste natürlich auch noch JLabel obname = new JLabel(wechselwestlayout);
löschen, da ich es ja jetzt direkt oben als Instanzvariable deklariere.
Das war die natürlich klar, aber ich habe dann doch nochmal 5 Minuten gebraucht.
Jetzt muss ich erstmal noch ein paar Sachen ausprobieren, um zu schauen ob ich damit schon weiter machen kann.
Kleine Frage noch.
EikeB hatte vorher angemerkt, das man doch lieber für jede Frage einen eigenen thread eröffnen sollte.
Ist das der allgemeine Konsens?
Dann werde ich das bei meiner nächsten Frage so handhaben, obwohl ich eigentlich lieber alles hier drin hätte.
Ja, habe ich vergessen zu erwähnen, aber du bist ja drauf gekommen
Bzw. kannst du es ja als Instanzvariable deklarieren, die Initialisierung aber so lassen und halt dann nur den Typ (JLabel) entfernen.
Hm, hat schon Sinn, was EikeB geschrieben hat, denn wenn dieser Thread dann sehr lang wird, wird es denk ich auch unübersichtlicher. Wenn du jedesmal ein neues Thema aufmachst, weiß man gleich, worum es geht