hey,
wir haben von unserem professor die aufgabe bekommen "game of life" mit swing zu programmieren...
ich habe in der hochschule damit angefangen das erstmal bisschen aufzubauen und dann grob damit angefangen das man felder anmalen kann...
meine idee war:
linker mausklick feld setzen
rechter mausklick feld löschen
mit links gedrückthalten und rum fahren felder setzen
mit rechts gedrückthalten und rum fahren felder löschen
das hat alles an der hochschule super geklappt ohne irgendwelche probleme...
doch als ich das programm dann hier bei mir daheim gestartet habe und dann irgendein feld setze,
bekomme ich irgendwie grafikprobleme...
also er zeichnet mir da irgendwelchen quatsch...
so sieht das programm normal aus:
doch sobald ich jetzt irgendwoe in ein feld klicke wird das hier daraus...
das komische ist rufe ich jetzt die repaint() methode auf zb durch vergrößern des fensters oder wenn ich auf start klicke (hab da einfach mal repaint() drauf gelegt) sieht das feld wieder richtig aus Oo
ich habe irgendwie nochmal alles angeschaut doch ich habe keine ahnung wo das problem ist...
in der schule hat es ja super funktioniert ohne probleme und ich habe ja garnichts geändert...
in der schule habe ich es mit netbeans 6.5.1 gemacht und hier daheim mit 6.8 laufen lassen...
auch mit 6.7.1 hat es probleme aber an netbeans sollte es ja nicht liegen...
hier könnt ihr euch mal das programm runterladen (es ist ein netbeans projekt):
GameOfLife.rar
und für die wo es nicht laden wollen hier der code:
wir haben von unserem professor die aufgabe bekommen "game of life" mit swing zu programmieren...
ich habe in der hochschule damit angefangen das erstmal bisschen aufzubauen und dann grob damit angefangen das man felder anmalen kann...
meine idee war:
linker mausklick feld setzen
rechter mausklick feld löschen
mit links gedrückthalten und rum fahren felder setzen
mit rechts gedrückthalten und rum fahren felder löschen
das hat alles an der hochschule super geklappt ohne irgendwelche probleme...
doch als ich das programm dann hier bei mir daheim gestartet habe und dann irgendein feld setze,
bekomme ich irgendwie grafikprobleme...
also er zeichnet mir da irgendwelchen quatsch...
so sieht das programm normal aus:
doch sobald ich jetzt irgendwoe in ein feld klicke wird das hier daraus...
das komische ist rufe ich jetzt die repaint() methode auf zb durch vergrößern des fensters oder wenn ich auf start klicke (hab da einfach mal repaint() drauf gelegt) sieht das feld wieder richtig aus Oo
ich habe irgendwie nochmal alles angeschaut doch ich habe keine ahnung wo das problem ist...
in der schule hat es ja super funktioniert ohne probleme und ich habe ja garnichts geändert...
in der schule habe ich es mit netbeans 6.5.1 gemacht und hier daheim mit 6.8 laufen lassen...
auch mit 6.7.1 hat es probleme aber an netbeans sollte es ja nicht liegen...
hier könnt ihr euch mal das programm runterladen (es ist ein netbeans projekt):
GameOfLife.rar
und für die wo es nicht laden wollen hier der code:
Java:
package gameoflife;
public class GameOfLifeFrame extends javax.swing.JFrame {
/** Creates new form GameOfLifeFrame */
public GameOfLifeFrame() {
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() {
jSpinner1 = new javax.swing.JSpinner();
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jPanel1 = new GameOfLifePanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jSpinner1.setModel(new javax.swing.SpinnerNumberModel(1, 1, 10, 1));
jSpinner1.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
jSpinner1StateChanged(evt);
}
});
jButton1.setText("Start");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setText("Exit");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 380, Short.MAX_VALUE)
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 237, 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()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(jSpinner1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton2)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jSpinner1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton1)
.addComponent(jButton2))
.addContainerGap())
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
repaint();
}
private void jSpinner1StateChanged(javax.swing.event.ChangeEvent evt) {
// TODO add your handling code here:
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new GameOfLifeFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JPanel jPanel1;
private javax.swing.JSpinner jSpinner1;
// End of variables declaration
}
Java:
package gameoflife;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import javax.naming.event.EventDirContext;
import javax.swing.event.MouseInputListener;
public class GameOfLifePanel extends javax.swing.JPanel {
private boolean[][] marker = new boolean[100][100];
/** Creates new form GameOfLifePanel */
public GameOfLifePanel() {
initComponents();
}
@Override
public void paint(Graphics gc) {
for (int i = 0; i < this.getWidth() / 20; i++) {
for (int j = 0; j < this.getHeight() / 20; j++) {
if (marker[i][j]) {
gc.setColor(Color.black);
} else {
gc.setColor(Color.lightGray);
}
gc.fillRect(i * 20, j * 20, 16, 16);
}
}
}
/** 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() {
addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
formMouseClicked(evt);
}
public void mousePressed(java.awt.event.MouseEvent evt) {
formMousePressed(evt);
}
});
addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseDragged(java.awt.event.MouseEvent evt) {
formMouseDragged(evt);
}
public void mouseMoved(java.awt.event.MouseEvent evt) {
formMouseMoved(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
}// </editor-fold>
private void formMouseClicked(java.awt.event.MouseEvent evt) {
int x = evt.getX() / 20;
int y = evt.getY() / 20;
if (evt.getButton() == 1) {
marker[x][y] = true;
} else {
marker[x][y] = false;
}
repaint();
}
private void formMousePressed(java.awt.event.MouseEvent evt) {
}
private void formMouseDragged(java.awt.event.MouseEvent evt) {
int x = evt.getX() / 20;
int y = evt.getY() / 20;
// System.out.println("Button = " + evt.getModifiers());
if (evt.getModifiers() == 16) {
marker[x][y] = true;
} else {
marker[x][y] = false;
}
repaint();
}
private void formMouseMoved(java.awt.event.MouseEvent evt) {
}
// Variables declaration - do not modify
// End of variables declaration
}