Suche weiter ideen und Verbesserungs vorschläge


tom23

Grünschnabel
#1
Java:
package xy

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.NumberFormat;

import javax.swing.*;
import javax.swing.text.NumberFormatter;

public class frame implements ActionListener
{
  
    public static void main(String[] args)
    {
        // TODO Auto-generated method stub
        
           JLabel Damage;
           JLabel Accuracy;
           JLabel BPM;
           JLabel MagKap;
           JLabel Reloadingtime;   
           JFormattedTextField Schaden;
           JFormattedTextField Genauigkeit;
           JFormattedTextField FeuerRate;
           JFormattedTextField MagAmmo;
           JFormattedTextField Nachladezeit;
          
 JFrame screen = new JFrame ("Menue");
  screen.setSize(600, 600);
  screen.setLayout(new FlowLayout());
  JToolBar tbar1 = new JToolBar (null, JToolBar.VERTICAL);
  JToolBar tbar2 = new JToolBar (null, JToolBar.VERTICAL);
 
  NumberFormat format = NumberFormat.getInstance();
  format.setGroupingUsed(false);
  NumberFormatter formatter = new NumberFormatter(format);
  formatter.setAllowsInvalid(false);
 
    
  Damage = new JLabel ("Damage ");
  Damage.setOpaque(true);
  Schaden = new JFormattedTextField ("Schaden");
  
  Accuracy = new JLabel ("Accuracy ");
  Accuracy.setOpaque(true);
  Genauigkeit = new JFormattedTextField ("Genauigkeit");
 
  BPM = new JLabel ("BPM ");
  BPM.setOpaque(true);
  FeuerRate = new JFormattedTextField ("BPM");
 
  MagKap = new JLabel ("MagKap ");
  MagKap.setOpaque(true);
  MagAmmo = new JFormattedTextField ("Magazin Grösse");
 
  Reloadingtime = new JLabel ("Reloadingtime ");
  Reloadingtime.setOpaque(true);
  Nachladezeit = new JFormattedTextField ("Nachlade Zeit");
 
  tbar1.add(Damage);
  tbar1.add(Accuracy);
  tbar1.add(BPM);
  tbar1.add(MagKap);
  tbar1.add(Reloadingtime);
 
  tbar2.add(Schaden);
  tbar2.add(Genauigkeit);
  tbar2.add(FeuerRate);
  tbar2.add(MagAmmo);
  tbar2.add(Nachladezeit);
 
 
        
    
 
  {
 int  a = 2900;
    if (a>20)
    
        Damage.setText ("Schlechterer schaden");
        else Damage.setText("Besserer schaden");
  }       
    
  {
      int b =96;
      if (b>80)
          
        Accuracy.setText ("Unpräzieser");
      else
      Accuracy.setText ("Präzieser");
  }   
 
  {
    int c = 110;
    if(c>100)
    
        BPM.setText("Schlechtere Feuerrate");
    else
        BPM.setText("Bessere Feuerrtate");
  }
 
  {
      int d = 50;
      if (d>20)
          
      MagKap.setText("Kleineres Magazin");
      else
          MagKap.setText("Größeres Magzin");
  }
 
  {
      int e = 3;
      if (e>2)
          
          Reloadingtime.setText("Bessere Nachladezeit");
      else
          Reloadingtime.setText("Schlechtere Nachladezeit");
  }
 
  screen.add(tbar1);
  screen.add(tbar2);
 
  screen.setVisible(true);}
    

    @Override
    public void actionPerformed(ActionEvent arg0) {
        // TODO Auto-generated method stub
        
    }


}
Gibt es sachen die ich hätte besser machen können und wie kann ich die werte aus den textfeldern nutzen um sie mit a,b,c,etc zu Vergleichen und wie Baue ich hier am besten action listener ein habbe iniges versucht allerdings bekamm ich immer grße mengen an fehlermeldungen
 

Bratkartoffel

gebratene Kartoffel
Premium-User
#2
Hi tom23,

tut mir Leid, aber dein Code kompiliert zwar (nachdem ich ein Semikolon nach dem package eingefügt habe), aber aus der GUI kann ich nicht erkennen, was du machen willst.

Was willst du genau haben / machen?
Was funtioniert nicht?
Hinweis: Klassen beginnen mit einem Grossbuchstaben, Variablen mit einem Kleinbuchstaben.

Grüsse,
BK
 

tom23

Grünschnabel
#3
Ich will die werte von 2 dingen vergleichen und die werte des 2. gegenstandes sollen über die Jtextfields einglesen werden.(die werte sind zahlen)
Und die ActionListener haben immer problem gemacht weswegen ich sie hier bei entfernt habe.

Danke für den Hinweis mit den variablen und Klassen
 

ComFreek

Mod | @comfreek
Moderator
#4
Ein paar Vorschläge: Einrückungen inkonsistent, nicht überall Klammern bei if-then-else, uninformative Variablennamen, inkonsistente (zu hohe) Anzahl von Newlines.

Hinweis: Klassen beginnen mit einem Grossbuchstaben, Variablen mit einem Kleinbuchstaben.
@tom23 Das ist übrigens nur Konvention unter Programmierern und nicht etwas, was Java erzwingt. (Es gibt jedoch Programmiersprachen, die das erzwingen.)

Und die ActionListener haben immer problem gemacht weswegen ich sie hier bei entfernt habe.
Zeig doch mal den Code von denen her (im Kontext!).
 

tom23

Grünschnabel
#5
Code:
  Schaden = new JFormattedTextField ("Schaden");
  Schaden.addActionListener(al);
Hier wird das Eingabefeld für einen Wert erstellt und der ActionListener "al" hinzugefügt
Java:
 ActionListener al = new ActionListener(){

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if (e.getModifiers()){}
        
    }
    
 };
ab e.getModifiers komme ich aktuell auch nicht weiter das ist aber nach meinem verständnis unwichtig da diese fehler auch bei früheren wegen vorkammen weswegen mir nach wie vor mehrer fehler probleme machen unter anderem wird angezeigt das nicht von int zu boolean konferteiert werden kann (das ist mir bewusst ich verstehe nicht wie er auf boolean kommt) und der ActionListener "al" des Textfeldes kann den fehler nach nicht zugeordnet werden (das {} ist nur da um einen unexpected token zu beheben).
PS: Danke für die Hinwiese
 

tom23

Grünschnabel
#8
@Bratkartoffel

Ich wollte mit "getModifires()" die eingegebene Zahl auslesen. Das ist aktuell die einzige Möglichkeit, ActionListener und Actionevents zu Nutzen, die ich kenne.

Mit freundlichen Grüßen
 

Bratkartoffel

gebratene Kartoffel
Premium-User
#9
Hi tom23,

wie in der JavaDoc angesprochen liefert das einen int zurück und zeigt dir, ob während des Klicks die Strg oder Shift-Taste gedrückt war. Ich verwende den ActionListener zum Beispiel nur für Buttons. Dort wird er nur gefeuert, wenn der Button gedrückt wurde. Von daher muss ich dort meistens mit dem ActionEvent gar nichts machen.

Wenn du zwei Textfelder miteinander vergleichen willst, dann füge deinen ActionListener einem JButton hinzu und rufe dir die Werte der Felder mit einem getText() zum Vergleichen ab. Wenn du "live" vergleichen willst, dann wäre hier eher ein KeyListener angebracht.

Grüsse,
BK
 

Neue Beiträge