Hallo,
ich programmieren schon etwas länger Java, bin allerdings bisher noch nicht mit canvas in Berührung gekommen. Ich möchte ein GUI erstellen (btw: Für "Game of the life" von Conway) mit drei Buttons einem JSlider und eben einen Canvas, dass ich über einen Thread ständig mit neuen Daten füttern kann. Ausserdem gibt es noch zwei Textfelder um Startkonditionen einzugeben. Das GridLayout funktioniert problemlos auch das Fenster wir angezeigt, Probleme bereitet mir allerdings, etwas in das Canvas zu zeichen. Dabei gibt es immer eine NullPointerException. Vielleicht kann mir jemand helfen, hier der Code:
ich programmieren schon etwas länger Java, bin allerdings bisher noch nicht mit canvas in Berührung gekommen. Ich möchte ein GUI erstellen (btw: Für "Game of the life" von Conway) mit drei Buttons einem JSlider und eben einen Canvas, dass ich über einen Thread ständig mit neuen Daten füttern kann. Ausserdem gibt es noch zwei Textfelder um Startkonditionen einzugeben. Das GridLayout funktioniert problemlos auch das Fenster wir angezeigt, Probleme bereitet mir allerdings, etwas in das Canvas zu zeichen. Dabei gibt es immer eine NullPointerException. Vielleicht kann mir jemand helfen, hier der Code:
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.awt.Canvas;
public class JeuvieGUI extends Canvas implements ActionListener {
class gestEvt implements WindowListener {
public void windowClosed(WindowEvent event) {}
public void windowDeiconified(WindowEvent event) {}
public void windowIconified(WindowEvent event) {}
public void windowActivated(WindowEvent event) {}
public void windowDeactivated(WindowEvent event) {}
public void windowOpened(WindowEvent event) {}
public void windowClosing(WindowEvent event) {
System.exit(0);
}
}
private gestEvt ge=new JeuvieGUI.gestEvt();
private Button CleanButton;
private Button CloseButton;
private TextField TextFieldC;
private TextField TextFieldF;
private Button ConvertButtonCF;
private Button ConvertButtonFC;
Canvas c = new Canvas();
JFrame frame = new JFrame("GridLayout");
public JeuvieGUI() {
c.setBackground(Color.yellow);
c.setBounds(0,0,200,200);
Graphics g = c.getGraphics();
c.paint(g);
frame.setSize(1000,400);
frame.addWindowListener(ge);
GridBagLayout gbl=new GridBagLayout();
frame.setLayout(gbl);
GridBagConstraints gbc=new GridBagConstraints();
gbc.fill=GridBagConstraints.HORIZONTAL; //horizontal Anordung
gbc.insets = new Insets(2,2,2,2); //spacing
gbc.gridx=1;
gbc.gridy=0;
gbc.gridheight = 1; //cellpadding if necss...
ConvertButtonFC = new Button("Starten");
gbl.setConstraints(ConvertButtonFC, gbc);
frame.add(ConvertButtonFC);
gbc.gridx=0;
gbc.gridy=0;
gbc.gridheight = 1; //cellpadding if necss...
TextFieldF = new TextField("",30);
gbl.setConstraints(TextFieldF, gbc);
frame.add(TextFieldF);
gbc.gridx=0;
gbc.gridy=1;
gbc.gridheight = 1; //cellpadding if necss...
ConvertButtonCF = new Button("Reset");
gbl.setConstraints(ConvertButtonCF, gbc);
frame.add(ConvertButtonCF);
gbc.gridx=1;
gbc.gridy=1;
gbc.gridheight = 1; //cellpadding if necss...
TextFieldC = new TextField("",30);
gbl.setConstraints(TextFieldC, gbc);
frame.add(TextFieldC);
//Close Button and Cleanup Button
gbc.gridx=0;
gbc.gridy=3;
gbc.gridheight = 1; //cellpadding if necss...
CloseButton = new Button("Close App.");
gbl.setConstraints(CloseButton, gbc);
frame.add(CloseButton);
gbc.gridx=1;
gbc.gridy=3;
gbc.gridheight = 1; //cellpadding if necss...
CleanButton = new Button("Clean Fields");
gbl.setConstraints(CleanButton, gbc);
frame.add(CleanButton);
gbc.gridx=0;
gbc.gridy=4;
gbc.gridheight = 1;
gbc.gridwidth = 2;
gbc.weighty = 1.0;
gbl.setConstraints(c, gbc);
frame.add(c);
CleanButton.addActionListener(this);
CloseButton.addActionListener(this);
ConvertButtonCF.addActionListener(this);
ConvertButtonFC.addActionListener(this);
frame.pack();
frame.setTitle("C° - F° Converter by pm");
frame.setVisible(true);
}
public void paint(Graphics g)
{
g.drawString("Hello!", 10, 10);
}
public static void main(String arg[]) {
JeuvieGUI Test=new JeuvieGUI();
}
public void actionPerformed(ActionEvent event)
{
if (event.getSource() == CleanButton)
{
TextFieldC.setText( " " );
TextFieldF.setText( " " );
// TextFieldF.setText("Celsius");
}
else if (event.getSource() == CloseButton)
{
System.out.println("Close");
System.exit(0);
}
else if (event.getSource() == ConvertButtonCF)
{
String Celsius = TextFieldC.getText();
float CtoF = ((Float.valueOf(Celsius).floatValue())*(9.0f/5))+32;
String afficheF = Float.toString(CtoF);
TextFieldF.setText(afficheF);
}
else if (event.getSource() == ConvertButtonFC)
{
String Fahrenheiten = TextFieldF.getText();
float FtoC = (((Float.valueOf(Fahrenheiten).floatValue())-32)*(5.0f/9));
String afficheC = Float.toString(FtoC);
TextFieldC.setText(afficheC);
}
}
}