Hallo erstmal,
Ich bin gerade dabei ein kleines Spiel zu programmieren und habe aber Probleme bezüglich der GUI-Anzeige.
Buttons, Labels, TextFields werden beim Starten des Programms angezeigt.
Doch wenn es um Zeichnungen geht, wie "drawOval", drawPolygon" , "drawImage",
dann werden diese Graphicsobjekte nicht angezeigt.
Habe hier im Forum ähnliche Probleme gefunden, doch Lösungsvorschläge wie: validate(), repaint(); bringt bei mir nichts.
Auch das Ändern der Fenstergröße (Ziehen, Minimieren, Maximieren) bringt nichts.
Um zu Prüfen, ob "überhaupt" etwas gezeichnet wird, habe ich einen MausListener eingebaut (Funktioniert so wie das Klicken auf einen Button), der bei Klicken auf das GUI meine "Zeichenmethode" jedesmal aufruft.
Ergebnis: Das Zeichnen der Graphicsobjekte funktioniert.
Doch wenn ich jetzt, nachdem ich etwas auf der GUI sehe, die Anwendung minimiere, maximiere oder wenn ein anderes Fenster vor meiner GUI aufpoppt, dann verschwindet alles wieder. Das ist außerst seltsam.
Erst wenn ich wieder auf die GUI klicke wodurch meine Zeichenmethode "DrawPanel" über "GitterNetzMap" aufgerufen wird, dann funktioniert es.
Aber wie gesagt: Dieses klicken auf die GUI sollte nur zum Testen für das Zeichnen da sein.
Hier ist der Quellcode meines Programms und hoffe ihr könnt mir dabei weiterhelfen.
Die GUI wurde dabei mit Netbeans erstellt und ist deshalb etwas länger.
Sonst benutze ich zum Programmieren Eclipse:
[HIGHLIGHT="Java"]
public class Hauptprogramm {
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new wilkommen().setVisible(true);
}
});
}
}[/HIGHLIGHT]
Um die GUI zu starten muss man auf "Neues Spiel starten" klicken.
[HIGHLIGHT="Java"]import java.awt.Graphics;
public class wilkommen extends javax.swing.JFrame {
public wilkommen() {
initComponents();
}
private static final long serialVersionUID = 4711L;
public static GUI gui;
public static Graphics g;
//unwichtiger Teil, unten ganz unten gehts weiter mit dem Buttons
private void initComponents() {
jFrame1 = new javax.swing.JFrame();
jPanel3 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
jComboBox5 = new javax.swing.JComboBox();
jButton4 = new javax.swing.JButton();
jLabel8 = new javax.swing.JLabel();
jPanel1 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Spieleinstellungen"));
jLabel3.setText("Spielertyp:");
jLabel2.setText("Spielername:");
jLabel9.setText("Spielfeld:");
jComboBox5.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Standard", "Random" }));
jComboBox5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
}
});
jButton4.setFont(new java.awt.Font("Tahoma", 1, 14));
jButton4.setText("Beginnen");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
}
});
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jButton1.setText("Neues Spiel Starten");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(29, 29, 29)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.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, 365, Short.MAX_VALUE)
.addComponent(jButton3, javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.PREFERRED_SIZE, 365, javax.swing.GroupLayout.PREFERRED_SIZE)))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton2)
.addGap(18, 18, 18)
.addComponent(jButton3)
.addContainerGap(26, Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 442, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap()))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 324, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-450)/2, (screenSize.height-353)/2, 450, 353);
}// </editor-fold>
//Neues Spiel starten und GUI öffnen
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
GUI gui = new GUI();
g = gui.getGraphics();
this.setVisible(false);
gui.setVisible(true);
GitterNetzMap.NeuesSpielfeld();
gui.repaint();
gui.validate();
}
// 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.JComboBox jComboBox1;
private javax.swing.JComboBox jComboBox2;
private javax.swing.JComboBox jComboBox3;
private javax.swing.JComboBox jComboBox4;
public static javax.swing.JComboBox jComboBox5;
private javax.swing.JFrame jFrame1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
private javax.swing.JTextField jTextField3;
private javax.swing.JTextField jTextField4;
// End of variables declaration
}
[/HIGHLIGHT]
Nun folgen ein paar Hilfklassen und die Drawpanel Klasse fürs Zeichnen:
[HIGHLIGHT="Java"]import java.awt.*;
public class DrawPanel extends Panel{
private static final long serialVersionUID=1L;
static int[]x = new int[6];
static int[]y = new int[6];
static Graphics g= wilkommen.g;
public static Polygon init6Eck(int xpos, int ypos, int radius){
for (int i=0; i<=5; i++){
x=(int) (xpos + radius *Math.cos( i* 2* Math.PI/6));
y=(int) (ypos + radius *Math.sin( i* 2* Math.PI/6));
}
return new Polygon (x,y,6);
}
static Polygon p1= init6Eck(342,352,50);
static Polygon p2= init6Eck(417,395,50);
static Polygon p3= init6Eck(492,438,50);
static Polygon p4= init6Eck(567,481,50);
public static void zeichnen(){
g.drawPolygon(p1);
g.drawPolygon(p2);
g.drawPolygon(p3);
g.drawPolygon(p4);
g.drawOval(100, 200, 100, 100);
}
}
[/HIGHLIGHT]
[HIGHLIGHT="Java"]public class CanvasObjekt {
int x;
int y;
public CanvasObjekt(int x, int y){
}
}
[/HIGHLIGHT]
[HIGHLIGHT="Java"]import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
class Mauslistener extends MouseAdapter
{
int x =0 ;
int y =0 ;
public void mousePressed(MouseEvent m){}
public void mouseReleased(MouseEvent m){
x = m.getX();
y = m.getY();
System.out.println("x = " + x + " y = " + y);
GitterNetzMap.Mauseingabe(x,y);
}
}[/HIGHLIGHT]
[HIGHLIGHT="Java"]
public class GitterNetzMap {
public static void NeuesSpielfeld(){
DrawPanel.zeichnen();
};
public static void Mauseingabe(int x,int y){
NeuesSpielfeld();
}
};
[/HIGHLIGHT]
Hier die GUI:
[HIGHLIGHT="Java"]
public class GUI extends javax.swing.JFrame {
public GUI() {
initComponents();
addMouseListener(new Mauslistener());
}
private static final long serialVersionUID = 1L;
private void initComponents() {
jPanel2 = new javax.swing.JPanel();
jPanel1 = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 652, Short.MAX_VALUE)
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 613, Short.MAX_VALUE)
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
pack();
}
// Variables declaration - do not modify
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
// End of variables declaration
}
[/HIGHLIGHT]
So, das Programm wurde an vielen Teilen gekürzt, sodass Buttons nicht richt bzw gar nicht angezeigt werden. Aber wie gesagt, es geht ja um das Zeichnen bzw. Anzeigen auf der GUI.
Um das Neuzeichnen mit Mausklick zu verhindern, müsst ihr in die Klasse "GitterNetzMap" gehen und einfach in der Methode "Mauseingabe" Neuesspiel() auskommentieren.
Ich hoffe ihr könnt mir helfen.
Gruß chacky
Ich bin gerade dabei ein kleines Spiel zu programmieren und habe aber Probleme bezüglich der GUI-Anzeige.
Buttons, Labels, TextFields werden beim Starten des Programms angezeigt.
Doch wenn es um Zeichnungen geht, wie "drawOval", drawPolygon" , "drawImage",
dann werden diese Graphicsobjekte nicht angezeigt.
Habe hier im Forum ähnliche Probleme gefunden, doch Lösungsvorschläge wie: validate(), repaint(); bringt bei mir nichts.
Auch das Ändern der Fenstergröße (Ziehen, Minimieren, Maximieren) bringt nichts.
Um zu Prüfen, ob "überhaupt" etwas gezeichnet wird, habe ich einen MausListener eingebaut (Funktioniert so wie das Klicken auf einen Button), der bei Klicken auf das GUI meine "Zeichenmethode" jedesmal aufruft.
Ergebnis: Das Zeichnen der Graphicsobjekte funktioniert.
Doch wenn ich jetzt, nachdem ich etwas auf der GUI sehe, die Anwendung minimiere, maximiere oder wenn ein anderes Fenster vor meiner GUI aufpoppt, dann verschwindet alles wieder. Das ist außerst seltsam.
Erst wenn ich wieder auf die GUI klicke wodurch meine Zeichenmethode "DrawPanel" über "GitterNetzMap" aufgerufen wird, dann funktioniert es.
Aber wie gesagt: Dieses klicken auf die GUI sollte nur zum Testen für das Zeichnen da sein.
Hier ist der Quellcode meines Programms und hoffe ihr könnt mir dabei weiterhelfen.
Die GUI wurde dabei mit Netbeans erstellt und ist deshalb etwas länger.
Sonst benutze ich zum Programmieren Eclipse:
[HIGHLIGHT="Java"]
public class Hauptprogramm {
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new wilkommen().setVisible(true);
}
});
}
}[/HIGHLIGHT]
Um die GUI zu starten muss man auf "Neues Spiel starten" klicken.
[HIGHLIGHT="Java"]import java.awt.Graphics;
public class wilkommen extends javax.swing.JFrame {
public wilkommen() {
initComponents();
}
private static final long serialVersionUID = 4711L;
public static GUI gui;
public static Graphics g;
//unwichtiger Teil, unten ganz unten gehts weiter mit dem Buttons
private void initComponents() {
jFrame1 = new javax.swing.JFrame();
jPanel3 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
jComboBox5 = new javax.swing.JComboBox();
jButton4 = new javax.swing.JButton();
jLabel8 = new javax.swing.JLabel();
jPanel1 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Spieleinstellungen"));
jLabel3.setText("Spielertyp:");
jLabel2.setText("Spielername:");
jLabel9.setText("Spielfeld:");
jComboBox5.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Standard", "Random" }));
jComboBox5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
}
});
jButton4.setFont(new java.awt.Font("Tahoma", 1, 14));
jButton4.setText("Beginnen");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
}
});
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jButton1.setText("Neues Spiel Starten");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(29, 29, 29)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.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, 365, Short.MAX_VALUE)
.addComponent(jButton3, javax.swing.GroupLayout.Alignment.LEADING,
javax.swing.GroupLayout.PREFERRED_SIZE, 365, javax.swing.GroupLayout.PREFERRED_SIZE)))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton2)
.addGap(18, 18, 18)
.addComponent(jButton3)
.addContainerGap(26, Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 442, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap()))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 324, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-450)/2, (screenSize.height-353)/2, 450, 353);
}// </editor-fold>
//Neues Spiel starten und GUI öffnen
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
GUI gui = new GUI();
g = gui.getGraphics();
this.setVisible(false);
gui.setVisible(true);
GitterNetzMap.NeuesSpielfeld();
gui.repaint();
gui.validate();
}
// 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.JComboBox jComboBox1;
private javax.swing.JComboBox jComboBox2;
private javax.swing.JComboBox jComboBox3;
private javax.swing.JComboBox jComboBox4;
public static javax.swing.JComboBox jComboBox5;
private javax.swing.JFrame jFrame1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
private javax.swing.JTextField jTextField3;
private javax.swing.JTextField jTextField4;
// End of variables declaration
}
[/HIGHLIGHT]
Nun folgen ein paar Hilfklassen und die Drawpanel Klasse fürs Zeichnen:
[HIGHLIGHT="Java"]import java.awt.*;
public class DrawPanel extends Panel{
private static final long serialVersionUID=1L;
static int[]x = new int[6];
static int[]y = new int[6];
static Graphics g= wilkommen.g;
public static Polygon init6Eck(int xpos, int ypos, int radius){
for (int i=0; i<=5; i++){
x=(int) (xpos + radius *Math.cos( i* 2* Math.PI/6));
y=(int) (ypos + radius *Math.sin( i* 2* Math.PI/6));
}
return new Polygon (x,y,6);
}
static Polygon p1= init6Eck(342,352,50);
static Polygon p2= init6Eck(417,395,50);
static Polygon p3= init6Eck(492,438,50);
static Polygon p4= init6Eck(567,481,50);
public static void zeichnen(){
g.drawPolygon(p1);
g.drawPolygon(p2);
g.drawPolygon(p3);
g.drawPolygon(p4);
g.drawOval(100, 200, 100, 100);
}
}
[/HIGHLIGHT]
[HIGHLIGHT="Java"]public class CanvasObjekt {
int x;
int y;
public CanvasObjekt(int x, int y){
}
}
[/HIGHLIGHT]
[HIGHLIGHT="Java"]import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
class Mauslistener extends MouseAdapter
{
int x =0 ;
int y =0 ;
public void mousePressed(MouseEvent m){}
public void mouseReleased(MouseEvent m){
x = m.getX();
y = m.getY();
System.out.println("x = " + x + " y = " + y);
GitterNetzMap.Mauseingabe(x,y);
}
}[/HIGHLIGHT]
[HIGHLIGHT="Java"]
public class GitterNetzMap {
public static void NeuesSpielfeld(){
DrawPanel.zeichnen();
};
public static void Mauseingabe(int x,int y){
NeuesSpielfeld();
}
};
[/HIGHLIGHT]
Hier die GUI:
[HIGHLIGHT="Java"]
public class GUI extends javax.swing.JFrame {
public GUI() {
initComponents();
addMouseListener(new Mauslistener());
}
private static final long serialVersionUID = 1L;
private void initComponents() {
jPanel2 = new javax.swing.JPanel();
jPanel1 = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 652, Short.MAX_VALUE)
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 613, Short.MAX_VALUE)
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
pack();
}
// Variables declaration - do not modify
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
// End of variables declaration
}
[/HIGHLIGHT]
So, das Programm wurde an vielen Teilen gekürzt, sodass Buttons nicht richt bzw gar nicht angezeigt werden. Aber wie gesagt, es geht ja um das Zeichnen bzw. Anzeigen auf der GUI.
Um das Neuzeichnen mit Mausklick zu verhindern, müsst ihr in die Klasse "GitterNetzMap" gehen und einfach in der Methode "Mauseingabe" Neuesspiel() auskommentieren.
Ich hoffe ihr könnt mir helfen.
Gruß chacky
Zuletzt bearbeitet: