GUI Anfänger einfaches Program AWT, Swing, JavaFX & SWT

JonasO

Mitglied
Hallo zusammen, ich bin dabei einige Programme aus Lehrbüchern nachzuvollziehen. Leider Funktioniert das Programm nicht, es liegt wahrscheinlich an dem übergeben Parameter Stil.JAVA in der main an FensterBauer, leider stehet im Buch nichts weiter zu der Klasse Stil ..... könnt ihr mir da helfen ??? 😳

Java:
package zaehler;
import java.awt.*;
import javax.swing.*;


public class FensterBauerKom {
    
    public static JFrame getFenster(String titel, 
            Dimension groesse, Point position,
            boolean goroesseveraenderbar, 
            boolean mitDekoration,Stil stil){
        
        switch(stil){
            case MOTIF:
                LAFEinstellung.setMotifLookAndFeel(); break;
            case JAVA:
                LAFEinstellung.setJavaLookAndFeel(); break;
            case NIMUBS:
                LAFEinstellung.setNimbusLookAndFeel(); break;
            default:
                LAFEinstellung.setNativLookAndFeel();
        }
        
        
        JFrame einFenster = new JFrame(titel);
        einFenster.setUndecorated(!mitDekoration);
        einFenster.setLocation(position);
        einFenster.setSize(groesse);
        einFenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        einFenster.setVisible(true);
        return einFenster;
        
    }
    }


package zaehler;
import javax.swing.UIManager;

public class LAFEinstellung {
    
    public static void setNimbusLookAndFeel(){
        try{
            UIManager.setLookAndFeel(" com.sun.java.swing.plaf.NimbusLookAndFeel");
        }
        catch(Exception e){
            e.printStackTrace();
            
        }
    }
    
    public static void setMotifLookAndFeel(){
        try{
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
            
        }
        catch(Exception e){ e.printStackTrace();}
    }
    
    public static void setNativLookAndFeel(){
        try{
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
 
    public static void setJavaLookAndFeel(){
            try{
                UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
            }
            catch(Exception e){ e.printStackTrace();}
        }
    }


package zaehler;

public class Zaehler {

    private int zaehlerstand= 0;
    
    public void setzteAufNull(){
        
        this.zaehlerstand=0;
    }
    
    public void erhoeheUmEins(){
        zaehlerstand++;
    }
    
    public void erhoeheUm(int delta){
        if(delta >0){
            zaehlerstand = zaehlerstand + delta;
        }
    }
    
    public int getZaehlerstand(){
        return zaehlerstand;
    }
    
}


package zaehler;

import java.awt.*;
import javax.swing.*;

public class ZaehlerGUI {
    
    
    private JPanel zeichenflaeche;
    private Zaehler zaehler;
    private JLabel kmStandAnzeige;
    private JTextField deltaTextFeld;
    
    public ZaehlerGUI(){
        initGUI();
    }
    
    private void initGUI(){
        
        zaehler = new Zaehler();
        LAFEinstellung.setJavaLookAndFeel();
        zeichenflaeche = new JPanel();
        zeichenflaeche.setBounds(25,25,200,230);
        zeichenflaeche.setBackground(Color.LIGHT_GRAY);
        zeichenflaeche.setLayout(null);
        
        JLabel ueberschrift = new JLabel("KM-Stand");
        ueberschrift.setBounds(25,25,150,20);
        ueberschrift.setForeground(Color.BLUE);
        ueberschrift.setHorizontalAlignment(SwingConstants.CENTER);
        zeichenflaeche.add(ueberschrift);
        
        kmStandAnzeige= new JLabel(Integer.toString(zaehler.getZaehlerstand()));
        kmStandAnzeige.setBounds(25,50,150,20);
        kmStandAnzeige.setForeground(Color.BLUE);
        kmStandAnzeige.setHorizontalAlignment(SwingConstants.CENTER);
        zeichenflaeche.add(kmStandAnzeige);
        
        JButton erhoeheUmEinsKnopf= new JButton("Erhöhe um 1");
        erhoeheUmEinsKnopf.setBounds(25,75,150,30);
        erhoeheUmEinsKnopf.setBackground(Color.YELLOW);
        zeichenflaeche.add(erhoeheUmEinsKnopf);
        
        JButton setzeAufNullKnopf= new JButton("Setzte auf 0");
        setzeAufNullKnopf.setBounds(25,125,150,30);
        setzeAufNullKnopf.setBackground(Color.YELLOW);
        zeichenflaeche.add(setzeAufNullKnopf);
        
        JButton erhoeheUmXKnopf= new JButton("Erhoehe um:");
        erhoeheUmXKnopf.setBounds(25,175,90,30);
        erhoeheUmXKnopf.setBackground(Color.YELLOW);
        zeichenflaeche.add(erhoeheUmXKnopf);
        

        deltaTextFeld= new JTextField();       
        deltaTextFeld.setBounds(130,175,45,30);
        zeichenflaeche.add(deltaTextFeld);
        
        erhoeheUmEinsKnopf.addActionListener(
                event ->{
                    zaehler.erhoeheUmEins();
                    kmStandAnzeige.setText(Integer.toString(zaehler.getZaehlerstand()));
                });
        
        setzeAufNullKnopf.addActionListener(
        event -> 
        {
            zaehler.setzteAufNull();
            kmStandAnzeige.setText(Integer.toString(zaehler.getZaehlerstand()));
        });
        
        erhoeheUmXKnopf.addActionListener(
            event -> {
                try{
                    int delta = Integer.parseInt(deltaTextFeld.getText());
                    zaehler.erhoeheUm(delta);
                    kmStandAnzeige.setText(Integer.toString(zaehler.getZaehlerstand()));
                }
                catch(NumberFormatException ausnahme){
                    Toolkit.getDefaultToolkit().beep();
                    deltaTextFeld.setText(" ");
                }
            }
        );
}
    
    public JPanel gibZeichenflaeche(){
        return zeichenflaeche;
    }
    
    
    public static void main(String[] args){
        SwingUtilities.invokeLater(new Runnable(){
            
            public void run(){
                ZaehlerGUI zGUI = new ZaehlerGUI();
                JFrame einFenster = FensterBauerKom.getFenster
                ("Kilometerzähler", 
                new Dimension(260,310), 
                new Point(25,25), false, 
                true, Stil.JAVA);
                
                einFenster.getContentPane().setLayout(null);
                einFenster.add(zGUI.gibZeichenflaeche());
                einFenster.setVisible(true);
          }  
        });
        
        
    }
 
Die Klasse Stil musst du erstellen bzw. sollte wohl irgendwo in dem Buch stehen. Das ist keine Klasse von Java.

Wenn du das ganze einfach durch einen String ersetzt funktioniert es schon, ist aber nicht die schönste Lösung.

FensterBauerKom.java
Java:
	public static JFrame getFenster(String titel, Dimension groesse, Point position, boolean goroesseveraenderbar,
			boolean mitDekoration, String stil) {

		switch (stil) {
		case "MOTIF":
			LAFEinstellung.setMotifLookAndFeel();
			break;
		case "JAVA":
			LAFEinstellung.setJavaLookAndFeel();
			break;
		case "NIMUBS":
			LAFEinstellung.setNimbusLookAndFeel();
			break;
		default:
			LAFEinstellung.setNativLookAndFeel();
		}

ZaehlerGUI.java
Java:
		public void run() {
				ZaehlerGUI zGUI = new ZaehlerGUI();
				JFrame einFenster = FensterBauerKom.getFenster("Kilometerzähler", new Dimension(260, 310), new Point(
						25, 25), false, true, "NIMUBS");

				einFenster.getContentPane().setLayout(null);
				einFenster.add(zGUI.gibZeichenflaeche());
				einFenster.setVisible(true);
			}

Dazu funktioniert dein Nimbus look and feel nicht, dazu schau mal hier:
Nimbus Look and Feel (The Javaâ„¢ Tutorials > Creating a GUI With JFC/Swing > Modifying the Look and Feel)

Gruß
Fabian
 
Zuletzt bearbeitet:
Hey Zusammen, zunächst einmal danke für die Antworten!
Hab jetzt wie von Ruzmanz vorgeschlagen einfach das enum Stil aufgestellt und es funktioniert 🙂 was ja an sich recht offensichtlich ist, mit dem Nimbus gibt es in der tat Probleme, bin aber noch nicht dazu gekommen..
Cheers und ein Schönes WE!
 

Zurück
Oben