das_pseudonym
Little Overclocker
|
Hey Leute findet irgendwer den Fehler in dem Prog?! (Soll a Paintprogramm werden, ich versuch grad die konturen eines Rechteckes zu zeichnen das man aufziehen kann) Hier der Code: import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* <p>Überschrift: </p>
* <p>Beschreibung: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Organisation: </p>
* @author unbekannt
* @version 1.0
*/
public class Drawer extends JFrame {
int Xanf=0, Yanf=0, Xend=0, Yend=0;
JButton BLinie = new JButton();
JButton BRechteck = new JButton();
GridLayout gridLayout1 = new GridLayout(7,1);
//Den Frame konstruieren
public Drawer() {
super("Mein Painter");
try {
setSize(new Dimension(500, 500));
jbInit();
show();
}
catch (Exception e) {
e.printS*****race();
}
}
public static void main(String[] args)
{
Drawer Programm=new Drawer();
}
//Initialisierung der Komponenten
private void jbInit() throws Exception {
East_Panel Panel_East=new East_Panel();
Center_Panel Panel_Center = new Center_Panel();
South_Panel Panel_South = new South_Panel();
Panel_East.setLayout(gridLayout1);
this.getContentPane().add(Panel_South, BorderLayout.SOUTH);
this.getContentPane().add(Panel_Center, BorderLayout.CENTER);
this.getContentPane().add(Panel_East, BorderLayout.EAST);
}
class East_Panel extends JPanel
{
East_Panel()
{
super();
BLinie.setText("Linie");
BRechteck.setText("Rechteck");
add(BLinie, null);
add(BRechteck, null);
}
}
class Center_Panel extends JPanel
{
Graphics g;
Center_Panel()
{
super();
this.addMouseListener(new MHandler());
this.addMouseMotionListener(new MMHandler());
}
public void paintComponent(Graphics g)
{
g.drawRect(Xanf, Yanf, Xanf-Xend, Yanf-Yend);
super.paintComponent(g);
}
class MHandler extends MouseAdapter
{
public void mousePressed(MouseEvent e)
{
Xanf=e.getX();
Yanf=e.getY();
}
}
class MMHandler extends MouseMotionAdapter
{
public void mouseDragged(MouseEvent e)
{
Xend=e.getX();
Yend=e.getY();
paintComponent(g);
}
}
}
class South_Panel extends JPanel
{
South_Panel(){}
}
}
also was mach ich falsch?!?!
Bearbeitet von das_pseudonym am 11.12.2004, 20:41
|
gue
Addicted
|
java.lang.NullPointerException
at Drawer$Center_Panel.paintComponent(Drawer.java:72)
at Drawer$Center_Panel$MMHandler.mouseDragged(Drawer.java:90)
at java.awt.Component.processMouseMotionEvent(Unknown Source)
at javax.swing.JComponent.processMouseMotionEvent(Unknown Source)
...
paintComponent(Graphics) in Center_Panel wird anscheinend mit null aufgerufen. Am besten, du benutzt einen Canvas, den du auf das Panel legst und dessen paintComponent Methode du überschreibst. Btw solltest du dich an die Java-Codingconventions halten (Bezeichner klein schreiben usw.). Edit: und schreib in deinen Constructor setDefaultCloseOperation(EXIT_ON_CLOSE); damit das Programm beendet wird, wenn du das Fenster schließt (kannst du ja später umändern, wenn du das abfangen willst).
Bearbeitet von gue am 11.12.2004, 20:58
|
Ringding
Pilot
|
Wenn du nächstes Mal so eine Frage stellst, schreib wenigstens dazu, was nicht funktioniert.
|
das_pseudonym
Little Overclocker
|
sry vergessen hab a bissal was verändert is aber immer noch der selbe fehler was soll ich tun? immer wenn ma im CenterPanel ein rechteck aufziehen will kommen massig viele fehlermeldungen! import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* <p>Überschrift: </p>
* <p>Beschreibung: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Organisation: </p>
* @author unbekannt
* @version 1.0
*/
public class Drawer extends JFrame {
int Xanf = 0, Yanf = 0, Xend = 0, Yend = 0;
JButton BLinie = new JButton();
JButton BRechteck = new JButton();
GridLayout gridLayout1 = new GridLayout(7, 1);
GridLayout gridLayout2 = new GridLayout(1,2);
//Den Frame konstruieren
public Drawer() {
super("Mein Painter");
try {
setSize(new Dimension(500, 500));
jbInit();
show();
}
catch (Exception e) {
e.printS*****race();
}
}
public static void main(String[] args) {
Drawer Programm = new Drawer();
}
//Initialisierung der Komponenten
private void jbInit() throws Exception {
East_Panel Panel_East = new East_Panel();
Center_Panel Panel_Center = new Center_Panel();
South_Panel Panel_South = new South_Panel();
Panel_East.setLayout(gridLayout1);
Panel_South.setLayout(gridLayout2);
this.getContentPane().add(Panel_South, BorderLayout.SOUTH);
this.getContentPane().add(Panel_Center, BorderLayout.CENTER);
this.getContentPane().add(Panel_East, BorderLayout.EAST);
}
class East_Panel
extends JPanel {
public East_Panel() {
super();
BLinie.setText("Linie");
BRechteck.setText("Rechteck");
add(BLinie, null);
add(BRechteck, null);
}
}
class Center_Panel
extends JPanel {
Graphics g;
public Center_Panel() {
super();
this.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
Xanf = e.getX();
Yanf = e.getY();
}
});
this.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
Xend = e.getX();
Yend = e.getY();
paintComponent(g);
validate();
}
});
}
public void paintComponent(Graphics g) {
g.drawRect(Xanf, Yanf, Xanf - Xend, Yanf - Yend);
super.paintComponent(g);
}
}
class South_Panel extends JPanel {
JLabel XKoo = new JLabel("X:");
JLabel YKoo = new JLabel("Y:");
public South_Panel() {
add(XKoo, null);
add(YKoo, null);
}
}
}
MfG pseudo
Bearbeitet von das_pseudonym am 12.12.2004, 01:12
|
watchout
Legendundead
|
Wenn du net bald die Java-Version und Fehlermeldungen dazuschreibst close ich den Thread, so bringt das nix.
|
gue
Addicted
|
Ich weiß, ich sollte ihm normalerweise nicht helfen aber ich machs trotzdem 1. "hab a bissal was verändert is aber immer noch der selbe fehler" naja die Listener in anonyme Klassen packen ist nicht unbedingt viel "verändern" 2. Das Problem liegt offensichtlich im MouseMotionListener vom CenterPanel. Dort rufst du paintComponent(g); auf, wobei g nie irgendwo initialisiert wurde. Ersetze das durch ein repaint(); dann sollten zumindest die Exceptions nicht mehr geworfen werden. 3. Du verwendest eine deprecated API (setVisible(true) anstatt show() verwenden). 4. Das ganze funktioniert trotzdem noch nicht, weil du noch irgendwo einen Fehler in der Programmlogik hast. 5. Das nächste mal genauer beschreiben, wo dein Problem liegt und zumindest den S*****race dazugeben
|
das_pseudonym
Little Overclocker
|
So hab jez ein bissal was ausbessert laut gue und hab die fehlermeldungen jez wegbekommen es sind aber weitere Fehler aufgetreten und ein Problem hab ich noch. 1. Wenn man die Maus auf dem Panel_center bewegt dann erscheint die X, Y Koordiante nicht nur im SouthPanel sondern auch imoberen linken Eck vom CenterPanel ebenso wenn man einen button drückt wird dieser im centerpanel im oberen linken eck gezeichnet. 2. Die bereits gezeichneten Rechtecke löschen sich nicht also ich bräuchte nen Befehl der das ganze CenterPanel "leert" in der docu hab ich allerdings nichts gefunden ich weiß ich geh euch am ***** aber BITTE HELFT MIR!! Hier der veränderte Code: import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* <p>Überschrift: </p>
* <p>Beschreibung: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Organisation: </p>
* @author unbekannt
* @version 1.0
*/
public class Drawer extends JFrame {
int Xanf = 0, Yanf = 0, Xend = 0, Yend = 0;
JButton BLinie = new JButton();
JButton BRechteck = new JButton();
GridLayout gridLayout1 = new GridLayout(7, 1);
GridLayout gridLayout2 = new GridLayout(1,2);
JLabel XKoo = new JLabel("X:");
JLabel YKoo = new JLabel("Y:");
//Den Frame konstruieren
public Drawer() {
super("Mein Painter");
try {
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
setSize(new Dimension(500, 500));
jbInit();
show();
}
catch (Exception e) {
e.printS*****race();
}
}
public static void main(String[] args) {
Drawer Programm = new Drawer();
}
//Initialisierung der Komponenten
private void jbInit() throws Exception {
East_Panel Panel_East = new East_Panel();
Center_Panel Panel_Center = new Center_Panel();
South_Panel Panel_South = new South_Panel();
Panel_East.setLayout(gridLayout1);
Panel_South.setLayout(gridLayout2);
this.getContentPane().add(Panel_South, BorderLayout.SOUTH);
this.getContentPane().add(Panel_Center, BorderLayout.CENTER);
this.getContentPane().add(Panel_East, BorderLayout.EAST);
}
class East_Panel
extends JPanel {
public East_Panel() {
super();
BLinie.setText("Linie");
BRechteck.setText("Rechteck");
add(BLinie, null);
add(BRechteck, null);
}
}
class Center_Panel
extends JPanel {
public Center_Panel() {
super();
this.setBackground(Color.WHITE);
this.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
Xanf = e.getX();
Yanf = e.getY();
}
});
this.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
Xend = e.getX();
Yend = e.getY();
repaint();
validate();
}
});
this.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseMoved(MouseEvent e)
{
XKoo.setText("X: " + e.getX());
YKoo.setText("Y: " + e.getY());
}
});
}
public void paint(Graphics g){
g.setColor(Color.BLACK);
if(Xend<Xanf && Yend<Yanf)
{
g.drawRect(Xend, Yend, Xend - Xanf, Yend - Yanf);
}
else
{
g.drawRect(Xanf, Yanf, Xend - Xanf, Yend - Yanf);
}
super.repaint();
}
}
class South_Panel extends JPanel {
public South_Panel() {
this.add(XKoo, null);
this.add(YKoo, null);
validate();
}
}
}
MfG tia pseudo
|
gerhardtt
Big d00d
|
wieso schreibst du nie die fehlermeldung hinzu? so zwingst du jemanden der dir helfen will den code auszuführen...
|
das_pseudonym
Little Overclocker
|
DA GIBTS KEINE FEHLERMELDUNGEN!!! mann
|
Dreamwatcher
Addicted
|
naja aber der rest geht ja ...
einschicken geht ned da mein vater die rechnung verschmissen hat!
Ansonsten keine möglichkeiten das zu fixen?
es gibt sie also doch.....
|
das_pseudonym
Little Overclocker
|
hast du den neuen beitrag schon gelesen??? du brauchst nicht auf sachen von gestern herumhacken *kopfschüttel*
|
gerhardtt
Big d00d
|
EDIT: na - ich verschwend nur mei energie
|
Ringding
Pilot
|
Also lass uns zusammenfassen: Du willst Hilfe, stellst dürftige Information zur Verfügung, auf mehrmaliges Nachfragen widerwillig sogar mehr. Dann beschimpfst du Leute, die deine chaotische Fragestellung nicht mehr überschauen und erwartest anscheinend von uns, dass wir riechen können, dass du dein gestriges Problem mit den Fehlermeldungen heute schon gelöst hast und jetzt ein anderes hast.
Gut, wenn du glaubst, dass du so Hilfe bekommst, will ich dich nicht aufhalten...
|
das_pseudonym
Little Overclocker
|
HILFE warum hört mir denn keiner zu? ich finde mein letzter beitrag damit mein ich den letzten mit code war wohl mit den nötigen informationen bestückt oder? die probleme wurden erklärt und der code ist auch eingefügt aber da irgendwie sich keiner dazu ermiächtigt sich die LETZTEN beiträge von mir durchzulesen anstatt den ersten 2 kann mich wohl keiner verstehen also ich hab nen fehler gemacht hab mich entschuldigt und hab mich verbessert im gegensatz zu euch die ihr euch noch immer über meine vorangegangenen fehler aufregt ich sag nur
DANKE
das nenn ich sozial
MfG
pseudo
|
Ringding
Pilot
|
ich finde mein letzter beitrag damit mein ich den letzten mit code war wohl mit den nötigen informationen bestückt oder? Stimmt. Wenn du nicht so herumgeschimpft hättest, hätte ich's mir auch angeschaut.
|