Swing SummSumm

Hxx1

Mitglied
Hallo,

ich bin gerade dabei ein programm zu programmieren, dass sich SummSumm nennt. Dieses Programm gibt es zwar schon im Internet. aber dort ist es (vermute ich) in einem html-code geschrieben und ich habe jetzt vor es selber für mich auf meinem rechner zu programmieren bin aber schon beim grundgerüst gescheitert???:L. Auf der Seite
Summ Summ - Das packende Würfelspiel könnt ihr euch die spielregeln ansehen. ich habe java aus einem Buch gelernt und dort ist es empfohlen schrittweise vorzugehen. also habe ich das grundgerüst geschrieben und eine kleine menüleiste zusammen gebastelt. ich bin gerade für die ereignisbehandlungsmethode für den button beenden in der menüleiste, bekomm es aber nicht hin das dasprogramm dann beendet. mein quelltext sieht wie folgt aus
Java:
 /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package javaapplication29;

/**
 *
 * @author Hendrik
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JPanel.*;
import javax.swing.JMenuBar.*;
import java.lang.String.*;
import java.awt.Frame.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class SummSumm extends JFrame {
//Hier Variablen für Komponenten deklarieren
    public Container contentPane = getContentPane();
    public JButton fertig = new JButton("Fertig");
    public JButton joker1 = new JButton();
    public JButton joker2 = new JButton();
    public JButton joker3 = new JButton();
    public JPanel oben = new JPanel();
    public JPanel mitte = new JPanel();
    public JPanel links = new JPanel();
    public JPanel unten = new JPanel();
    public JTable reste = new JTable();
    public JTable punkte = new JTable();
    public JLabel tipp = new JLabel();
    public JLabel würfel1 = new JLabel();
    public JLabel würfel2 = new JLabel();
    public JLabel würfel3 = new JLabel();
    public JLabel würfel4 = new JLabel();
    public JLabel würfel5 = new JLabel();
    public String titel;
    public JMenuBar menuLeiste = new JMenuBar();
    public JMenu menuDatei = new JMenu("Datei");

   


	public SummSumm() {
        super();

        //Menü zusammenbauen
        JMenuItem itemSpielen = new JMenuItem("Spielen",new ImageIcon("spielen.gif"));
        JMenuItem itemBeenden = new JMenuItem("Beenden");
        menuDatei.add(itemSpielen);
        menuDatei.addSeparator();
        menuDatei.add(itemBeenden);

        //Menü zur Menüleiste hinzufügen
        menuLeiste.add(menuDatei);

        addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

            

	//Hauptfenster einrichten
	
        setTitle("SummSumm");
        setJMenuBar(menuLeiste);
        

        
	getContentPane().setBackground(Color.YELLOW);

	//Hier Komponenten einfügen
        
        getContentPane().add(oben, BorderLayout.NORTH);
        getContentPane().add(mitte, BorderLayout.CENTER);
        getContentPane().add(links, BorderLayout.WEST);
        



	

	}
        public void actionPerformed(ActionEvent e) {
        if(e.getActionCommand().equals("Beenden"))
        System.exit(0);
    }

//Hier Ergebnisbehandlungsmethoden für Komponenten

public static void main(String args[]) {
//Fenster erzeugen und anzeigen
SummSumm hauptfenster = new SummSumm();
hauptfenster.setSize(1275,965);
hauptfenster.setLocation(1,1);
hauptfenster.setVisible(true);
    }

 
}

ich hoffe ihr könnt mir weiterhelfen.

Hxx1

P.S. wenn mir jemand sagen könnte wie man ein fenster programmiert das sich über den ganzen bildschirm zieht wäredas sehr hilfreich.
 

eRaaaa

Top Contributor
Du hast zwar die actionPerformed Metode implementiert, aber die wird ja nicht automatisch aufgerufen, du musst schon sagen wann und wie. Du willst diese Action ja ausführen wenn der Button betätigt wird, also musst du den ActionListener auch an dem Button registrieren. Da du die Methode jetzt aber in der Klasse SummSumm geschrieben hast, fehlt noch das implements -->
Code:
public class SummSumm extends JFrame implements ActionListener{
.
Nun kannst du so etwas schreiben wie [c]itemBeenden.addActionListener(this);[/c].

Nähere Informationen und Alternativen stehen hier: How to Write an Action Listener (The Java™ Tutorials > Creating a GUI With JFC/Swing > Writing Event Listeners)

Zu deinem P.s. :
z.B. mit
Java:
		hauptfenster.pack();
		hauptfenster.setExtendedState(JFrame.MAXIMIZED_BOTH);
(vor setVisible(true))
 
Zuletzt bearbeitet:

Hxx1

Mitglied
Und noch eine Frage. Kann mir jemand sagen wie man ein helles Gelb als hintergrund machen kann. ich kenn nämlich nur die Methode
Code:
setBackground(Color.YELLOW)
Aber diese Farbe ist eindeutig zu kräftig. Kann mir da jemand weiterhelfen?
Gruß

Hxx1
 

jgh

Top Contributor
indem du die Farbe dir machst...
Java bietet mit dem JColorChooser dir eine Möglichkeit dazu..
Du suchst dir bspw. über den JColorChooser deine gewünschte Farbe aus und merkst dir die RGB-Werte, anschließend instanzierst du eine neue Farbe nach deinen Wünschen.

Java:
public static void main(String[] args) {
		javax.swing.JColorChooser.showDialog(null, "Test", null);
		Color c = new Color(217, 222, 133);
	}

EDIT:

du könntest dein Hauptfenster auch noch undecorated setzen...dann fällt der typische Rahmen mit minimieren, maximieren und schließen weg.
Java:
hauptfenster.setUndecorated(true);
 
Zuletzt bearbeitet:

Hxx1

Mitglied
vielen dank ihr beeiden.
ich habe noch eine frage an xehpuk.
wo genau muss ich den befehl hinschreiben, dass der pc ein hellgelb macht. ich denke man fügt die farbe dann genau so wie die anderen auch ins fenster ein.

gruß

hxx1
 

carador

Neues Mitglied
An denjenigen, der am 14.2., 4:23:40 mit der IP 93.134.122.117
hier war und anschließend auf meine SummSumm-Seite gegangen ist,
um dort gefälschte Highsore-Einträge zu erzeugen:

Ich habe weder Lust noch Zeit auf ein Wettrüsten, um die
Highscore-Eintragung fälschungssicher zu machen.

Falls die Fälschungen nicht aufhören (am 17.2., 4:03:15 war
ein weiterer Vorfall), werde ich die betroffenen IP-Bereiche
sperren. Gibt es danach noch immer Fälschungen, werde ich die
gesamte Highscore-Liste aus dem Spiel nehmen.

Christian
 

xehpuk

Top Contributor
Die eigene Konstante setzt du direkt in die Klasse, in etwa so:
[JAVA=23]public class SummSumm extends JFrame {
public static final Color LIGHT_YELLOW = new Color(1f, 1f, .5f);
//Hier Variablen für Komponenten deklarieren[/code]
Im Konstruktor setzt du die Farbe dann als Hintergrund, wie du es bereits in Zeile 78 tust:
[JAVA=78] getContentPane().setBackground(LIGHT_YELLOW);[/code]
 

Suinos

Bekanntes Mitglied
Es gibt auch entsprechende Methoden, um Farben heller und dunkler zu machen:

Java:
public static void main(String... args)
{
	// neue Farbe mit 0xAB Rot, 0xCD Grün, 0xEF Blau
	Color color = Color.decode("#ABCDEF");
	
	System.out.printf("original: %s\n", color);
	System.out.printf("heller:   %s\n", color.brighter());
	System.out.printf("dunkler:  %s\n", color.darker());
}
->
Code:
original: java.awt.Color[r=171,g=205,b=239]
heller:   java.awt.Color[r=244,g=255,b=255]
dunkler:  java.awt.Color[r=119,g=143,b=167]
 

xehpuk

Top Contributor
Nur nützen diese beim Erzeugen eines "Hellgelbs" nichts, da
Code:
Color.YELLOW
schon das "hellste" Gelb ist. Was hier ja eher gewollt ist, ist ein nicht so gesättigtes Gelb, welches man wohl über HSB bekommen könnte.

(Kenne mich da aber nicht wirklich aus. :oops:)
 

Neue Themen


Oben