Canvas und Buttons

Status
Nicht offen für weitere Antworten.
D

Darkmaster

Gast
Hallo Leute,

ich hab vor Vier Gewinnt in Java zu programmieren und hab deswegen Canvas hergenommen. Hat bis jetzt auch alles gut geklappt mit dem zeichnen, nur habe ich keine Buttons integriert, und die brauch ich unbedingt, damit ich einen Stein in eine Spalte fallen lassen kann. Mein Problem ist jetzt, dass ich es nicht schaffe einen Button in dem Canvas zu erstellen.
Ich poste Mal meine bisherigen Erkenntnisse:
Code:
package gewinnt;

import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.util.*;


class save 
{
	static char spielfeld[][];
}

public class Test extends Canvas{
	static int GROESSE=30;
	static int LAENGE=9;
	static int HOEHE=7;
	public static final int WIDTH = GROESSE*LAENGE+100;
	public static final int HEIGHT = WIDTH;


	Image bildns,bildg,bildmc; 
	public HashMap sprites;
	public BufferedImage buffer;
	
	public Test() {
		sprites = new HashMap();
		buffer = new BufferedImage(WIDTH,HEIGHT, BufferedImage.TYPE_INT_RGB);
		JFrame ventana = new JFrame("HaloZero");
		JPanel panel = (JPanel)ventana.getContentPane();
		setBounds(0,0,WIDTH,HEIGHT);
		panel.setPreferredSize(new Dimension(WIDTH,HEIGHT));
		panel.setLayout(null);
		panel.add(this);
		ventana.setBounds(0,0,WIDTH,HEIGHT);
		ventana.setVisible(true);
		ventana.addWindowListener( new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		ventana.setIgnoreRepaint(true);
		ventana.setResizable(false); 

	    bildns = java.awt.Toolkit.getDefaultToolkit().getImage("c:/Bilder/nicht_sand.gif");
	    bildg  = java.awt.Toolkit.getDefaultToolkit().getImage("c:/Bilder/gegner.gif");
	    bildmc = java.awt.Toolkit.getDefaultToolkit().getImage("c:/Bilder/MasterChief.gif");


		 }

	  
 public void createspielfeld() 
    {

        int i=6+1;    //Weil unten eine Mauer ist
        int j=7+2;    //Weil links und rechts Mauern sind.
        
        save.spielfeld = new char[i][j];

                for (j=0, i=0; i <HOEHE; i++)   //LINKE MAUER
                    save.spielfeld[i][j]='#';

                for (j=0; j < LAENGE-1; j++)
                        for(i=0; i < HOEHE; i++)
                        {
                                if (i==HOEHE-1) //UNTERE MAUER
                                        save.spielfeld[i][j]='#';
                        }
                for (j=LAENGE-1, i=0; i < HOEHE; i++)//RECHTE MAUER
                        save.spielfeld[i][j]='#'; 
    }

		public void showspielfeld()//SPIELSTAND AKTUALISIEREN
		{
                   
			Graphics g = buffer.getGraphics();
                        
			getGraphics().drawImage(buffer,0,0,this);
					for (int j=0; j < LAENGE; j++)
						for (int i=0; i < HOEHE; i++)
						{
//							System.out.println(save.spielfeld[i][j]);
							if(save.spielfeld[i][j]=='#')
								g.drawImage(bildns, j*GROESSE+100, i*GROESSE+100, this);
							else if(save.spielfeld[i][j]=='1')
								g.drawImage(bildmc, j*GROESSE+100, i*GROESSE+100, this);
							else if(save.spielfeld[i][j]=='2')
								g.drawImage(bildg, j*GROESSE+100, i*GROESSE+100, this);
						}
		}
		
	public void game() 
	{

		createspielfeld();

		while (isVisible()) 
		{

			showspielfeld();
                        
		}
	}
	
	public static void main(String[] args) 
	{
		Test inv = new Test();
		inv.game();
	}
}
Es soll also wie hier zu sehen, ein Spiefeld mit der Grösse 6 auf 7 erstellt werden und außen rum Kästchen die als Mauer dienen(Nur oben nicht, denn da kommen die Steine ja rein.) Und jetzt hoff ich dass jemand mir den Code so ändert, dass da zumindest ein Button auftaucht.

MFG

Markus
 

L-ectron-X

Gesperrter Benutzer
Du solltest Swing und AWT besser nicht mischen. Daher am besten das Canvas gegen ein JPanel tauschen.
Im JPanel überschreibst du dann die paintComponent()-Methode mit deinem Zeichencode.
 
D

Darkmaster

Gast
L-ectron-X hat gesagt.:
Du solltest Swing und AWT besser nicht mischen. Daher am besten das Canvas gegen ein JPanel tauschen.
Im JPanel überschreibst du dann die paintComponent()-Methode mit deinem Zeichencode.
Ok, du meinst also, dass ich das ganze was ich bereits geschrieben habe in einem JPanel unterbringen kann indem ich nur irgendwie eine paintComponent()-Methode hernehme? Vielleicht könntest du mir ein kurzes Beispiel dafür geben, denn ich weiß noch nicht genau wie die Methode funktionieren soll.

P.S.: Schönes Bild :)
 

L-ectron-X

Gesperrter Benutzer
Darkmaster hat gesagt.:
Ok, du meinst also, dass ich das ganze was ich bereits geschrieben habe in einem JPanel unterbringen kann indem ich nur irgendwie eine paintComponent()-Methode hernehme?
Genau, so in etwa.

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

public class FigureFrame extends JFrame {
   public FigureFrame(String title) {
      super(title);
      setSize(800, 600);
      setLocationRelativeTo(null);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      
      DrawingPanel panel = new DrawingPanel();
      add(panel);
   }
   
   class DrawingPanel extends JPanel {
      DrawingPanel() {
         setBackground(Color.BLACK);
      }
      
      public void paintComponent(Graphics g) {
         super.paintComponent(g);
         g.setColor(Color.BLUE);
         g.fillOval(200, 50, 400, 400);
         g.setColor(Color.CYAN);
         g.drawOval(200, 50, 400, 400);
         g.setColor(Color.YELLOW);
         g.fillOval(200, 200, 200, 200);
      }
   }

   public static void main(String[] args) {
      new FigureFrame("Erde und Mond").setVisible(true);
   }
}
 
D

Darkmaster

Gast
Ich habs jetzt in ein JPanel kopiert und musste nicht mal irgendwelche Methoden umschreiben. Das Button konnte ich setzen, aber leider ist der Hintergrund immer schwarz und der verdeckt dann das Button. Ich habe also mein Feld in dem die Steine sind, und über dem sollen dann ja kleine button sein wo ich die steine reinwerfen kann. Weißt du wie ich jetzt die Hintergrundfarbe schwarz abstelle? Der Code ist immer noch der selbe.
 

L-ectron-X

Gesperrter Benutzer
:) Guck dir doch mal den Konstruktor von meiner Klasse DrawingPanel an. :wink:
Der ist noch auf meine Zeichnung abgestimmt. Wie fügst du die Button hinzu? Dran denken: JButton verwenden!
 
D

Darkmaster

Gast
L-ectron-X hat gesagt.:
:) Guck dir doch mal den Konstruktor von meiner Klasse DrawingPanel an. :wink:
Der ist noch auf meine Zeichnung abgestimmt. Wie fügst du die Button hinzu? Dran denken: JButton verwenden!
Ja ich hab das Feld zu groß dimensioniert und hab dadurch alles verdeckt. Jetzt seh ich auch die Buttons und kann sie endlich anklicken. Aber ein letztets Problem bleibt. Ich rufe das ganze von einem Hauptfenster auf in dem ich mehrere Schaltflächen habe. Neues Spiel, Laden, Highscore. usw. Ich rufe also bei einem Neues Spiel Button die Main der Spielfläche auf und habe dann nur das Feld und nicht mehr die Buttons. Kann ich denn nicht einfach Spielfeld.java aufrufen? Weil sonst gibt er nur das Spielfeld aus und die Knöpfe macht er nicht. Oder muss ich irgendwie die Main verändern? Der Code mit dem Fenster schließen liest er ja auch nicht.

Code:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
   
Playground.main(null);
}
 

Morgyr

Aktives Mitglied
Dann gestalte das ganze so, dass du irgendwo am Rand dein Menü hast und dann auf dem restlichen Fensterinhalt ein JPanel mit dem Spielfeld drauf.
So lässt sich das Spielfeld auch leichter wieder ausblenden.
Sprich, du hast ein Fenster mit den JButton und einem JPanel, dass wiederum das Spielfeld beinhaltet. Das lässt sich ja über panel.setVisible(true); ein-, bzw. über panel.setVisible(false); ausblenden.


Was genau bedeutet der Code, den du gepostet hast?
 
D

Darkmaster

Gast
Morgyr hat gesagt.:
Dann gestalte das ganze so, dass du irgendwo am Rand dein Menü hast und dann auf dem restlichen Fensterinhalt ein JPanel mit dem Spielfeld drauf.
So lässt sich das Spielfeld auch leichter wieder ausblenden.
Sprich, du hast ein Fenster mit den JButton und einem JPanel, dass wiederum das Spielfeld beinhaltet. Das lässt sich ja über panel.setVisible(true); ein-, bzw. über panel.setVisible(false); ausblenden.


Was genau bedeutet der Code, den du gepostet hast?

Ok, ich habs wohl falsch formuliert. Ich habe im Moment 2 Fenster. Eines ist das Hauptfenster in dem die grundlegenden Sachen zum auswählen drin sind, und nicht das Spielfeld. In dem zweiten Fenster soll nach dem ich den Neues Spiel Button im Hauptmenü gedrückt habe das Spielfeld erscheinen und drüber die Buttons zum reinwerfen in die jeweilige Spalte. Wenn ich das zweite Fenster alleine starte ohne über den Weg Hauptfenster -> Neues Spiel dann erscheint alles korrekt, heißt ich habe das Spielfeldfenster, das Spielfeld, die Buttons und kann das Fenster schließen. Wenn ich hingegen es so starte wie ich es später haben will ist keine Möglichkeit da das Fenster zu schließen oder irgendwelche Buttons, weil sie gar nicht aufgerufen wurden, die jeweiligen Deklarationen oder wie auch immer. Ich habe den Code so gepostet wie er im Hauptmenü drin ist. der ruft die Main auf und die Main wie man ja sieht dann game() und irgendwie ist der Code von Test(); scheinbar ungelesen. Also wie ändere ich das jetzt?
 
D

Darkmaster

Gast
Seid ihr jetzt schon überfordert, oder hab ich euch zu sehr verwirrt? :bahnhof:
 

L-ectron-X

Gesperrter Benutzer
Eher Letzteres. Denn wenn man sich deinen Code so anschaut, merkt man, dass dir noch einige Grundlagen fehlen. Und für Grundlagen gibts gute Bücher.
 
D

Darkmaster

Gast
Ok, ich geb ja zu, dass ich mich mit der grafischen Oberfläche von Java noch nicht sehr gut auskenne. Ich hab ja erst vor 2 Monaten mit Java angefangen. Bücher hab ich im Moment nur Java ist auch eine Insel, aber so richtig weitergebracht hat es mich eigentlich nicht. Drum dacht ich mir frag ich mal in einem Forum, ob denn jemand eine Ahnung hat bzw. mir helfen kann. Ich weiß ja nur ned genau, warum einerseits wenn ich die java datei mit dem spielfeld und den button aufruf so aussieht wie sie soll, und wenn ich von einer anderen java datei das mache, es keine button anzeigt.
 

L-ectron-X

Gesperrter Benutzer
Ich würde dir ja gerne weiter helfen. Dazu brauche ich aber die auch die Bilder, die du einbinden möchtest, ich kann sonst nichts kompilieren. Außerdem ist es immer hilfreich, ein Bild zu posten, wie das Ganze aussehen soll, dann kann man auch mal ein kleines passendes Beispiel zusammen bauen, von dem du lernen kannst.
 
D

Darkmaster

Gast
So ich hab dir jetzt mal ein Bild zusammengestellt wie das jetztige Programm aussieht. Rechts siehst du wenn ich das Playground.java selbst öffnen. Links wenn ich es über die main öffne. Du siehst, dass hier die Buttons auf einmal fehlen. Ich will also hinter der Main ein Bild zeichnen, dass direkt im Hintergrund ist, und nicht die Buttons verdeckt.
Da sind im Moment 4 Buttons mit Neues Spiel usw und direkt dahinter soll das Bild sein, welches ich noch nicht habe. (Such ich erst noch aus). In dem Spielfeldfenster will ich auch ein Hintergrundbild und am besten wärs wenn das aufrufen besser funktionieren würde über Neues Spiel, so das die Buttons auch da sind. Falls du doch nun ein Hintergrundbild benötigst werd ich noch schnell was zusammenstellen.


9dab45unbenannt.jpg
 

Morgyr

Aktives Mitglied
Schick doch bitte auch nochmal den kompletten Code. Zumindest den, der dein Spielfeld komplett zeichnet, und den Abschnitt im gesamten Code, der das Spielfeld aufrufen soll.
Sowie ich das sehe, rufst du bei dem Klick auf "Neues Spiel" irgendeine Methode in irgendeiner Klasse Playground auf. Das Problem ist, ich sehe nirgends eine Klasse Playground. Am besten postet du das noch mal unterteilt, damit unser Wissensstand aktueller wird.
 
D

Darkmaster

Gast
na klar, kein problem, ich schick einfach die neue version.
Hier das Hauptmenue.java

Code:
/*
 * Hauptmenue.java
 *
 * Created on 19. Mai 2008, 18:25
 */

package gewinnt;

/**
 *
 * @author  User
 */
public class Hauptmenue extends javax.swing.JFrame {

    /** Creates new form Hauptmenue */
    public Hauptmenue() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jButton1.setText("Neues Spiel");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.setText("Spiel laden");

        jButton3.setText("Anleitung");

        jButton4.setText("Beenden");
        jButton4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton4ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(161, 161, 161)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addComponent(jButton4, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jButton3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jButton2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jButton1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap(152, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(81, 81, 81)
                .addComponent(jButton1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton3)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton4)
                .addContainerGap(109, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
   
Playground.main(null);
}                                        

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
// TODO add your handling code here:
}                                        

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Hauptmenue().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    // End of variables declaration                   

}
Und hier das Spielfeld
Code:
/*
 * NewJPanel.java
 *
 * Created on 21. Mai 2008, 23:19
 */

package gewinnt;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.util.*;
class sav 
{
	static char spielfeld[][];
}
/**
 *
 * @author  Darkmaster
 */
public class Playground extends javax.swing.JPanel 
{

  int posX=100;
  int posY=100;
    static int GROESSE=30;
    static int LAENGE=9;
    static int HOEHE=7;
    public static final int WIDTH = GROESSE*LAENGE;
    public static final int HEIGHT = GROESSE*HOEHE;
    Image bildns,bildg,bildmc; 
    public HashMap sprites;
    public BufferedImage buffer;

    Playground() 
    {
     
		sprites = new HashMap();
		buffer = new BufferedImage(WIDTH,HEIGHT, BufferedImage.TYPE_INT_RGB);
		JFrame ventana = new JFrame("Halo Zero JPANEL");
		JPanel panel = (JPanel)ventana.getContentPane();
		setBounds(0,0,WIDTH+posX,HEIGHT+posY);//POSITION DES FELDES
		panel.setPreferredSize(new Dimension(WIDTH,HEIGHT));
		panel.setLayout(null);
		panel.add(this);
		ventana.setBounds(0,0,500,500);//FENSTERGROESSE
		ventana.setVisible(true);
		ventana.addWindowListener( new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		ventana.setIgnoreRepaint(true);
		ventana.setResizable(false); 

	    bildns = java.awt.Toolkit.getDefaultToolkit().getImage("c:/Bilder/nicht_sand.gif");
	    bildg  = java.awt.Toolkit.getDefaultToolkit().getImage("c:/Bilder/gegner.gif");
	    bildmc = java.awt.Toolkit.getDefaultToolkit().getImage("c:/Bilder/MasterChief.gif");
		 }

    public void createspielfeld() 
        {

            int i=6+1;    //Weil unten eine Mauer ist
            int j=7+2;    //Weil links und rechts Mauern sind.
//            Graphics g  = buffer.getGraphics();
//             g.setColor(getBackground());
//            g.fillRect(0,0,getWidth(),getHeight());
            sav.spielfeld = new char[i][j];

                    for (j=0, i=0; i <HOEHE; i++)   //LINKE MAUER
                        sav.spielfeld[i][j]='#';

                    for (j=0; j < LAENGE-1; j++)
                            for(i=0; i < HOEHE; i++)
                            {
                                    if (i==HOEHE-1) //UNTERE MAUER
                                            sav.spielfeld[i][j]='#';
                            }
                    for (j=LAENGE-1, i=0; i < HOEHE; i++)//RECHTE MAUER
                            sav.spielfeld[i][j]='#'; 
        }

        public void showspielfeld()//SPIELSTAND AKTUALISIEREN
        {
          
            Graphics g  = buffer.getGraphics();
            getGraphics().drawImage(buffer,posX,posY,this);
 
            for (int j=0; j < LAENGE; j++)
                for (int i=0; i < HOEHE; i++)
                {
//                  System.out.println(save.spielfeld[i][j]);

                    if(sav.spielfeld[i][j]=='#')
                        g.drawImage(bildns, j*GROESSE, i*GROESSE, this);
                    else if(sav.spielfeld[i][j]=='1')
                        g.drawImage(bildmc, j*GROESSE, i*GROESSE, this);
                    else if(sav.spielfeld[i][j]=='2')
                        g.drawImage(bildg, j*GROESSE, i*GROESSE, this);
                }
        }
		
	public void game() 
	{
            
               initComponents();
		createspielfeld();
		while (isVisible()) 
		{
			showspielfeld();
		}
	}
	
	public static void main(String[] args) 
	{
            Playground inv = new Playground();
            inv.game();
            
	}


    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();
        jButton5 = new javax.swing.JButton();
        jButton6 = new javax.swing.JButton();
        jButton7 = new javax.swing.JButton();

        jButton1.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.setMaximumSize(new java.awt.Dimension(30, 30));

        jButton3.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });

        jButton4.setMaximumSize(new java.awt.Dimension(30, 30));

        jButton5.setMaximumSize(new java.awt.Dimension(30, 30));

        jButton6.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton6.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton6ActionPerformed(evt);
            }
        });

        jButton7.setMaximumSize(new java.awt.Dimension(30, 30));
        jButton7.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton7ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(144, 144, 144)
                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 25, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton6, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton7, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(185, 185, 185))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(73, 73, 73)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jButton7, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 23, Short.MAX_VALUE)
                    .addComponent(jButton6, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 23, Short.MAX_VALUE)
                    .addComponent(jButton5, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 23, Short.MAX_VALUE)
                    .addComponent(jButton4, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 23, Short.MAX_VALUE)
                    .addComponent(jButton3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 23, Short.MAX_VALUE)
                    .addComponent(jButton2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 23, Short.MAX_VALUE)
                    .addComponent(jButton1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 23, Short.MAX_VALUE))
                .addGap(214, 214, 214))
        );
    }// </editor-fold>                        

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    System.out.println("dhsaf");
}                                        

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
// TODO add your handling code here:
}                                        

private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {                                         
// TODO add your handling code here:
}                                        

private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {                                         
// TODO add your handling code here:
}                                        


    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JButton jButton5;
    private javax.swing.JButton jButton6;
    private javax.swing.JButton jButton7;
    // End of variables declaration                   

}
 
D

Darkmaster

Gast
Hmm, ich hoffe, dass irgendjemand auch die zweite seite ansieht.
 
D

Darkmaster

Gast
Danke erst mal, dass du dir die Zeit genommen hast mir zu helfen. Ich hab es noch nicht ganz angesehen, aber welche plattform nimmst du den zum programmieren her? Mit den Jar-File kenn ich mich jetzt aber noch nicht ganz aus. Du hast da zwei mal zwei java-files und zweimal die gleichen klassen. Warum, wieso? :)

P.S: Das Hintergrundbild ist der Hammer! :toll:
 

L-ectron-X

Gesperrter Benutzer
Darkmaster hat gesagt.:
Ich hab es noch nicht ganz angesehen, aber welche plattform nimmst du den zum programmieren her?
Beim Stichwort Plattform fiel mir gleich ein, dass ich das Ganze mit Java 1.6 erzeugt habe. Damit das Beispiel auch noch unter älteren VM läuft, habe ich es jetzt noch mal mit Java 1.4.2 kompiliert und die Jar-Datei im obigen Link ersetzt.

Meinst du mit Plattform nun meine Java-Version? Dann lautet die Antwort: Alle VMs ab Java 1.4.2.
Falls du meinen Editor/IDE gemeint hast: Ich benutze für kleine Sachen, wie für solche Beispiele den Java-Editor, für größe Programme NetBeans.

Darkmaster hat gesagt.:
Mit den Jar-File kenn ich mich jetzt aber noch nicht ganz aus. Du hast da zwei mal zwei java-files und zweimal die gleichen klassen. Warum, wieso? :)
Das Beispiel-Programm besteht aus zwei Klassen. Eine, die von JFrame und eine die von JPanel erbt.
In einem Kleinen Beispiel kann man sicher noch mehrere Funktionen in einer Klasse bündeln, aber wenn das Projekt größer wird, sollte Funktionalität aufgeteilt und abstrahiert werden, um bessere Wiederverwendbarkeit, Wartbarkeit und Übersicht zu gewinnen.

Jar-Dateien kannst du per Doppelklick starten, so wie exe-Dateien unter Windows. Die meisten Editoren und IDEs bieten die Möglichkeit per Mausklick Jar-Dateien vom Projekt zu erzeugen

Darkmaster hat gesagt.:
P.S: Das Hintergrundbild ist der Hammer! :toll:
Dafür gibts einschlägige Wallpaper-Seiten.
 
D

Darkmaster

Gast
Ich komm leider immer noch nicht ganz zurecht. Ich habe jetzt die Struktur verändert, damit ich nicht so viele Probleme hab. Jetzt habe ich nur noch ein Fenster und darauf Buttons habe ich vollkommen dezimiert und dafür eine Menüleiste eingerichtet. Dann hab ich oben zwei Felder in dem man als erstes die namen eingeben muss (für den späteren Highscore) und unten ein Textfeld indem versch. Meldungen ausgegeben werden sollen. z.b. Fehlermeldungen. Jetzt hab ich wieder das Problem, dass ich es nicht hinbekomm das Spielfeld hinzumalen. Ich hab ja die 2 kleinen Bilder und die sollen dann je nach spalte (7 an der Zahl, dort kommen noch Buttons hin) herunterfallen (ohne Animation, die sollen einfach unten auftauchen). So jetzt meine bitte. Wäre es möglich, dass ich dir (L-ectron-X) die bereits geschriebene Fassung schicke und du mir den nötigen Code reinfügen könntest (mit Netbeans) so dass da das spielfeld auftaucht wenn man auf neues spiel drückt, bzw. das Tastenkürzel Strg + N? Mehr bräucht ich nicht, ich will nur die Fläche endlich sehen können, damit ich dort dann weiter arbeiten kann.

MfG

Darkmaster

P.S.: Ich will das Forum nicht nochmal mit wahrscheinlich supoptimal programmieten Code vollstopfen, drum wärs mir recht wenn du mir per Mail antwortest: MC_Darkmaster ät web Punkt de
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H JavaFX Canvas neu zeichnen anstoßen AWT, Swing, JavaFX & SWT 34
H JavaFX Gedrehter Text auf Canvas (Positionierung) AWT, Swing, JavaFX & SWT 6
ExceptionOfExpectation Textdarstellung auf einem Canvas mit Hilfe von repaint(); AWT, Swing, JavaFX & SWT 6
W Clear Canvas und anschließendes neues Erstellen von Objekten auf Canvas aus ArrayList AWT, Swing, JavaFX & SWT 4
W Canvas oder Polygone? AWT, Swing, JavaFX & SWT 3
Monokuma Canvas Form entfernen AWT, Swing, JavaFX & SWT 2
Monokuma KeyEvent in der Canvas Klasse AWT, Swing, JavaFX & SWT 0
M Internal Frames und Canvas-Element AWT, Swing, JavaFX & SWT 9
TheJavaKid Auf eine Zeichnung im Canvas reagieren AWT, Swing, JavaFX & SWT 13
M Halbkreiszeichnen(Canvas) - Diesen mit Mouseevents bestücken AWT, Swing, JavaFX & SWT 3
dereki2000 AWT Canvas zeichnet nicht AWT, Swing, JavaFX & SWT 7
D Canvas oder scene graph? AWT, Swing, JavaFX & SWT 16
J Canvas wird nicht angezeigt AWT, Swing, JavaFX & SWT 10
Y Objekte grafisch darstellen ohne GMF - Composite auf Canvas? AWT, Swing, JavaFX & SWT 2
Prafy AWT Klickbare Bereiche auf Canvas AWT, Swing, JavaFX & SWT 2
J JavaFX JavaFX Canvas einfaches Zeichenprogramm AWT, Swing, JavaFX & SWT 7
P MalProgramm mit JScrollPane und Canvas AWT, Swing, JavaFX & SWT 2
Cromewell JavaFX Nur bestimmten Teil eines Canvas rendern und anzeigen AWT, Swing, JavaFX & SWT 2
N Swing Benötige Hilfe um ein Swing Canvas zu speichern AWT, Swing, JavaFX & SWT 4
L JavaFX Canvas max size? AWT, Swing, JavaFX & SWT 1
J JavaFX Rendering von Canvas sehr langsam AWT, Swing, JavaFX & SWT 2
P AWT Canvas freihändig zeichnen AWT, Swing, JavaFX & SWT 1
Regedit JavaFX Java Canvas hört ständig auf zu aktualisieren/malen AWT, Swing, JavaFX & SWT 3
H JavaFX Freezes beim Zeichnen mit Canvas AWT, Swing, JavaFX & SWT 3
Z Canvas in Frame einfügen. Problem mit 4-Gewinnt AWT, Swing, JavaFX & SWT 1
B JavaFX KeyEvent und Canvas draw Problem AWT, Swing, JavaFX & SWT 9
K Fragen zu JavaFx Canvas AWT, Swing, JavaFX & SWT 0
C Java FX Canvas missing getGraphicContext2D AWT, Swing, JavaFX & SWT 5
windl Overlay mit Transparentem JWindow und Canvas AWT, Swing, JavaFX & SWT 2
S JavaFX Canvas - nur eine Figur auf der Zeichenfläche färben? AWT, Swing, JavaFX & SWT 1
R JComponent auf Canvas AWT, Swing, JavaFX & SWT 8
S Canvas durch transparentes JPanel sichtbar machen AWT, Swing, JavaFX & SWT 2
A JavaFX Menubar wird von Canvas überzeichnet AWT, Swing, JavaFX & SWT 8
antonbracke Multiplayer Shooter- Wie geht das mit Canvas & Graphics AWT, Swing, JavaFX & SWT 6
Luk10 KeyBindings mit Canvas? AWT, Swing, JavaFX & SWT 3
B LookAndFeel GWT: Canvas in TabSet nicht sichtbar AWT, Swing, JavaFX & SWT 2
K canvas zeig nach repaint nichts an AWT, Swing, JavaFX & SWT 8
T Canvas clipping AWT, Swing, JavaFX & SWT 4
S 2 Canvas übereinander AWT, Swing, JavaFX & SWT 2
S 2D-Grafik Canvas Problem(Größe) AWT, Swing, JavaFX & SWT 6
K 3D-Grafik Canvas ist ein eigener Frame?! AWT, Swing, JavaFX & SWT 13
F Canvas Objekt außerhalb des Frames zeichnen AWT, Swing, JavaFX & SWT 3
M Wofür Canvas? AWT, Swing, JavaFX & SWT 5
frankred Swing Canvas nach "Window-resize" neu Zeichnen lassen wegen Anzeigefehler AWT, Swing, JavaFX & SWT 4
S Canvas in ScrollPane wird beim scrollen immer neu gezeichnet AWT, Swing, JavaFX & SWT 3
F Nur ein Objekt auf Canvas neu zeichnen AWT, Swing, JavaFX & SWT 4
B AWT Canvas überdeckt nach repaint() JComboBox-Optionen AWT, Swing, JavaFX & SWT 2
lumo SWT Canvas transparent AWT, Swing, JavaFX & SWT 4
2 AWT Zeichnen in Canvas AWT, Swing, JavaFX & SWT 5
B 2D-Grafik Malen/übermalen mit Canvas AWT, Swing, JavaFX & SWT 5
L Dynamisch Objekte in Canvas zeichnen AWT, Swing, JavaFX & SWT 5
G Auf Canvas zeichnen nur über boolean-Abfragen? AWT, Swing, JavaFX & SWT 5
S Canvas-Inhalt in Laufzeit ändern AWT, Swing, JavaFX & SWT 6
R In JFrame oder in Canvas mit grafischen Elemente zeichnen AWT, Swing, JavaFX & SWT 2
I Canvas Repaint Probleme AWT, Swing, JavaFX & SWT 2
S Bild wird auf Canvas in Applet nicht gezeichnet AWT, Swing, JavaFX & SWT 4
G SWT Linie unter transparentes Canvas zeichnen AWT, Swing, JavaFX & SWT 4
F Swing Paint mit Canvas Element AWT, Swing, JavaFX & SWT 35
S SWT Canvas: Flackernde Bilder AWT, Swing, JavaFX & SWT 3
T AWT canvas AWT, Swing, JavaFX & SWT 3
P Canvas: String wird nicht gezeichnet AWT, Swing, JavaFX & SWT 5
T SWT Canvas Koordinaten per MouseMove auslesen AWT, Swing, JavaFX & SWT 1
H Zeichnen auf smartgwt Canvas AWT, Swing, JavaFX & SWT 4
G Drag and Drop JTree to Canvas AWT, Swing, JavaFX & SWT 7
K Swing Sinuskurve zeichnen auf Canvas AWT, Swing, JavaFX & SWT 2
M AWT Component/Canvas erzeugt unerwünschten Rahmen bei paint AWT, Swing, JavaFX & SWT 3
J Canvas / paint() AWT, Swing, JavaFX & SWT 2
D Canvas soll angezeigtes jpg-Bild aktualisieren AWT, Swing, JavaFX & SWT 4
N zeichnen auf awt canvas AWT, Swing, JavaFX & SWT 9
G Ein Wort in einem String färben in einer Canvas AWT, Swing, JavaFX & SWT 10
J Canvas Inhalt als Bild speichern! AWT, Swing, JavaFX & SWT 16
T zeichnen mit canvas AWT, Swing, JavaFX & SWT 3
S repaint im Canvas AWT, Swing, JavaFX & SWT 3
P Zeichnen in Canvas und Neuzeichnen AWT, Swing, JavaFX & SWT 3
G Canvas + Swing-Objekte AWT, Swing, JavaFX & SWT 5
C canvas.draw zeichne ohne ausfüllen AWT, Swing, JavaFX & SWT 9
P Canvas in JFrame mit GridLayout AWT, Swing, JavaFX & SWT 4
B Graphics und Canvas - Problem AWT, Swing, JavaFX & SWT 2
T Canvas gegen Container austauschen --> GUI fehlt AWT, Swing, JavaFX & SWT 4
P Canvas Inhalt löschen AWT, Swing, JavaFX & SWT 4
D Canvas über JMenuBar AWT, Swing, JavaFX & SWT 7
F ToolTip auf Canvas AWT, Swing, JavaFX & SWT 2
L Probleme mit mehreren Canvas: Überlagerungseffekte? AWT, Swing, JavaFX & SWT 5
N Zu hoher Speicherverbrauch beim Zeichnen (Canvas) AWT, Swing, JavaFX & SWT 5
G Canvas im JPanel - "Freie" Fläche Problem AWT, Swing, JavaFX & SWT 10
T Textfeldwert in canvas AWT, Swing, JavaFX & SWT 4
D cannot access Canvas AWT, Swing, JavaFX & SWT 13
G Canvas in SWT aktualisieren AWT, Swing, JavaFX & SWT 21
S AUF Canvas Zeichnen Fehler! AWT, Swing, JavaFX & SWT 10
G Canvas löschen AWT, Swing, JavaFX & SWT 15
H Sowas wie ein Canvas AWT, Swing, JavaFX & SWT 3
D Inhalt einer Canvas löschen (SWT.NO_BACKGROUND gesetzt) AWT, Swing, JavaFX & SWT 3
G GridBagLayout mit Canvas-Positionsproblem AWT, Swing, JavaFX & SWT 5
J Canvas und JTextField AWT, Swing, JavaFX & SWT 2
T erkennen ob innerhalb oder außerhalb von canvas gezeichnet AWT, Swing, JavaFX & SWT 2
S Problemen mit Canvas-Objekten im GridLayout AWT, Swing, JavaFX & SWT 8
P Tranparentes Canvas AWT, Swing, JavaFX & SWT 8
P Inhalt eines Canvas verkleinern AWT, Swing, JavaFX & SWT 3
G Canvas, JMenu, und BufferStrategy AWT, Swing, JavaFX & SWT 2
M Codeteilung -> Canvas zeichnet nicht mehr AWT, Swing, JavaFX & SWT 40

Ähnliche Java Themen

Neue Themen


Oben