| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: Java im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hi! Der Code den ich erstellt habe, funktionniert genauso wie ich es wollte. Was mich aber an diesem Code ...
![]() |
| | #1 (permalink) |
| Guest Likes: | Anzeige Hi! Der Code den ich erstellt habe, funktionniert genauso wie ich es wollte. Was mich aber an diesem Code stoert ist das ich in der Klasse globale Variablen setzten muss damich ich mit der ActionListener-Methode mit den Dingern arbeiten kann. Meine Frage ist also: Kennt irgendjemand eine Moeglichkeit wie ich diie globalen Dinger ohne Probleme in die Methode holen kann? Die Methode ist zwar keine Mainmethode aber man kann das ja einfach umschreiben. mfg sw33t Code: package apiversuch;
import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class anotherone implements EventListener
{
static JTextField eingabe = new JTextField(4);
static JButton bla = new JButton();
public static void schreiben()
{
JFrame abhaengig = new JFrame("Anotherone");
JFrame.setDefaultLookAndFeelDecorated(true);
abhaengig.setVisible(true);
abhaengig.setPreferredSize(new Dimension(300,300));
JPanel hola = new JPanel(new BorderLayout());
bla.setText("change me");
bla.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent d)
{
bla.setText((String)eingabe.getText());
return;
}
}
);
hola.add(bla,BorderLayout.SOUTH);
hola.add(eingabe,BorderLayout.NORTH);
hola.setBorder(BorderFactory.createEmptyBorder(5,10,15,20));
abhaengig.add(hola,BorderLayout.CENTER);
abhaengig.pack();
return;
}
} |
|
| | #2 (permalink) |
| Senior Member Registriert seit: 26.03.06 ![]() Likes: 16 | du willst "bla" in actionPerformed haben ohne bla static zu machen? Warum sollte das nicht klappen? Code: import javax.swing.*;
import java.awt.event.*;
public class Test {
private JTextField text;
private JButton button;
public void foo() {
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ev) {
text.setText("test");
}
});
}
} Dein Code ist ja richtig gruselig ... - alles static - du erzeugst ohne erkennbaren Grund ein JFrame in einer statischen Methode, deren namen nichts mit dem zu tun hat, was da drin steht ... Achja: wenn du das static von den Variablen weg nimmst muss deine Methode auch non-static werden .. |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Guest Likes: | Nein du hast mich nicht ganz verstanden. Das was du gemacht hast ist das gleiche was ich gemacht habe nur in gruen. static heisst das es in dem gesamten Prog nur eine Instanz dieser Klasse geben darf, Das ist auch genau das was ich wollte, denn ich habe hier mit der GUI nur rumprobiert, damit ich es spaeter auf ein anderes Programm uebertragen kann. Ich wollte es static deklarieren, da ich keinen Bock und keine Notwenigkeit sah dafuer extra eine Instanz zu erstellen, abgesehen davon bin ich schreiibfaul,ein Wort gegen eine Zeile, da nehme ich natuerlich das Wort.^^ Mit dem Namen der einzelnen Sachen und deren Funktionen hast du recht, wuerde mir auch nicht einfallen es in einem groesseren Projekt zu versuchen. Ich bin was java angeht kein Crack und ich vertrete immer noch die Ansicht: "I never thought that a Coup of Coffee could give a BJ, but now I know JAVA sucks!"; Javaskript sei mal dahin gestellt, aber Java???Nein danke, nicht fuer mich. Obwohl es GROESTENTEILS Portabel ist, sie Handys und JavaApplets. Was ich wissen wollte ist: Kann ich die Buttons und Textfelder irgendwie in die Methode reinholen? (Sorry wenn das angangs nicht so rueberkam) Denn bei mir kommt immer die Kompielermeldung: ....Tries to access from inner Class... needs to be declared Final... Aber Final ist ja nicht in meinem Sinne da ich die Beschrieftung ja noch aendern will. Und wiso sagst du das ich einen JFrame ohne ersichtlichen Grund erzeuge? Ich Zeige ja den Frame an und damit ich die Biuttons auch anzeigen kann muessen die halt da mit rein, das JPanel koennte ich , meines wissens nach weglassen und alles direkt ins Fenster packen. mfg sw33t |
|
| | #4 (permalink) |
| Senior Member Registriert seit: 26.03.06 ![]() Likes: 16 | Static hat nichts damit zu tun, dass du eine Instanz der Klasse erzeugt werden darf. Wenn du das erreichn willst musst du dir das Singleton-Pattern anschauen. Bei dem final bin ich mir gerade nicht ganz sicher, aber ich denke du kannst trotz einer final-declaration von JTextField die setText(String)-Methode aufrufen. |
| | |
| | #5 (permalink) |
| Guest Likes: | Code: import javax.swing.*;
import java.awt.event.*;
public class Test {
public void foo() {
final JTextField text = new JTextField();
JButton button = new JButton();
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ev) {
text.setText("test");
}
});
}
} @sw33tlull4by Ich hab dich auch nicht ganz verstanden. Was ist dein Problem? Du willst das JTextField und den JButton auch in der actionPerformed-Methode nutzen, oder seh ich da was falsch? Was ist so falsch daran, es mit globalen Variablen ( den Sinn von Static versteh ich hier auch nicht.... ) durchzuführen? Du kannst es natürlich auch anders machen: Code: public class Test {
public void foo() {
JTextField text = new JTextField();
JButton button = new JButton();
Listener listen = new Listener(button,text);
button.addActionListener(listen);
}
public class Listener implements ActionListener {
JButton b;
JTextField t;
public Listener(JButton bu, JTextField txt) {
b=bu;
t=txt;
}
public void actionPerformed(ActionEvent e) {
t.setText("Text");
}
}
} Code: import javax.swing.*;
import java.awt.event.*;
public class Test implements ActionListener {
private JTextField text;
public void foo() {
text = new JTextField();
JButton button = new JButton();
button.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
text.setText("test");
}
} |
|
| | #6 (permalink) |
| Guest Likes: | thx... die Codes sind schon eher das was ich suche. Wiso ich das nicht mit den Globalen Variabeln machen will? Encapsukation und ich versuche alle Sachen die ich benutze so dicht wie moeglich beieinander zu behalten also nach Moeglichkeit ein einer Methode(lesbarkeit und Wartung), es sei denn es wuerde zu redundantem Code fuehren. Ist halt ein Tick von mir. Vielen Dank fuer eure Hilfestellungen. mfg Sw33t |
|
| | #7 (permalink) |
| Registriert seit: 08.06.07 ![]() Likes: 0 | Dein Problem ist der Zugriff aus einer anonymen Klasse(ActionListener). Aktivierst du an der Stelle eine methode ,die das selbe macht , dürfte es keine Probleme geben. mfG |
| | |
| | #8 (permalink) |
| Registriert seit: 07.06.07 ![]() Likes: 0 | Ich habe ebenfalls eine Frage zu Java. Meine Frage ist , ob es ein Programm gibt ( so etwas ähnliches wie Paint sollte es sein ) , womit man etwas malen kann um damit dann die koordinaten von bestimmten punkten in der zeichnung abzulesen. So kann man dann im Programm die koordinaten bei zb drawline(); eingeben und erählt eine saubere Zeichnung. Mit schätzen klappt das bei etwas komplizierteren sachen nähmlich nicht mehr so gut icon_wink.gif Das könnte man auch selbst machen indem man ein Koordinaten kreuz in Java bei Paint öffnet und dann drüber malt .. Aber wo gibt es solch ein KoordinatenKreuz / oder am besten ein Programm dafür ?? MfG Steve |
| | |
| | #9 (permalink) |
| Senior Member Registriert seit: 26.03.06 ![]() Likes: 16 | und was genau hat das mit java tun?? hört sich für micht nach vektorgraphik-programmen an, was du da beschreibst. |
| | |
| | #10 (permalink) |
| Registriert seit: 07.06.07 ![]() Likes: 0 | Nene , es soll kein programm sein bei dem der benutzer etwas zeichnenö kann. Ich meinte damit ich selbst etwas zeichnen kann ( so wie bei paint ) aber , dass ich auf ein kooridnaten kreuz zeichnen kann , damit ich dran sehen kann wie die kooridaten sind. Damit ich die dann im Programm ( das ich selbst schreibe ) benutzen kann. WEil normaler weise schätze ich immer. Zb wenn ich eine linie schräg ober den bildchirm haben will ( vonn 0,0 nach 500,500 zb ) Ich wollte aber fragen ob es ein Programm gibt bei dem man in diesem beispiel einfach eine linie zeichnet .. und da steht dann über welche koordinaten ( über wie viel pixel ) die linie geht. Weil das java-koordinaten kreuz hat ja 0 oben rechts in der ecke .. ---- Anders könnte man auch einfach das Java-Koordinaten kreuz bei paint einfügen und dann drübermalen |
| | |
| | #11 (permalink) | |
| Senior Member Registriert seit: 26.03.06 ![]() Likes: 16 | Zitat:
| |
| | |
| | #12 (permalink) | |
| Guest Likes: | Zitat:
Also wenn ich das mal entziffern dürfte ( ich versuchs einfach mal ): Du willst ein Koordinatenkeuz haben, in das man einen Linie zeichnen kann und dann die Koordinaten von versch. Punkten angezeigt werden. Wenn das so ist: Der MouseListener bzw der MouseMotionListener sollten dir dabei weiter helfen. Mit dem MouseEvent, das bei beiden mit einbezogen werden muss, gibt dir die Koordinaten an. D.h. mit mousePress(MouseEvent me) setzt die Anfangskoordinaten und speicherst diese in Variablen. Mit mouseRelease(MouseEvent me) setzt du die Entkoordinaten und speicherst diese wieder in Variablen. Ob du nun eine Linie zeichnest oder dir die Punkte irgendwo ausgeben lässt ist egal. | |
|
| | #13 (permalink) |
| Senior Member Registriert seit: 26.03.06 ![]() Likes: 16 | oje ... jahrgang 92 ... da kann man ihm verzeihen dass er erst lernen muss wie man sich ausdrückt |
| | |
| | #14 (permalink) |
| Registriert seit: 07.06.07 ![]() Likes: 0 | MAN !! GENAU SO EBEN NICHT Ich meine , dass ich dass Programm nicht selber schreiben möchte , damit der Benutzer da etwas reinmalt und ich dann die koordinaten weiß. Ich suche ein fertiges Programm ( falls es so etwas schon gibt ) wo ich dann reinmalen kann. Dieses Programm sollte einen hintergrund ( z.b. ) haben bei dem man das Java koordinaten kreuz sieht , sodass ich die koordinaten von meiner eigenen zeichnung in diesem ( schon fertigen ) programm ablesen kann. Warum ich so ein Programm brauche/suche ???? Wenn man (ich) in java zb in der paint() methode etwas zeichnen will. sagen wir mal eine linie die schräg über den bildchschirm geht.. paint(Graphics g) { g.drawLine(0,0,500,500 }; Im normalfall würde ich diese Koordinaten schätzen. ( Abschätzen von welcher koordinate zu welcher koordinate diese linie gehen müsste damit ich eine linie habe die schräg über den bildschirm geht ) Aber was wenn ich jetzt zb einen Stern(oder die umrisse eines Tieres , was auch immer ) zeichnen will ??? Das ist verdammt schwer diese linien alle abzuschätzen , also wäre es gut wenn ich ein programm hätte , indem ich meine zeichnugn einfach so reinmalen kann ( eben so wie bei paint ) und danach die koordinaten ablesen, Dann kann ich diese Koordinaten in meinem Programm ( das ich selbst schreibe , und dann in diesem Fall einen stern enthält ) benutzen.. Viel Text , aber ich hoffe ich hab es jetzt ausführlich genug erklärt! DANKE Steve |
| | |
| | #15 (permalink) |
| das würde ich aber nicht mit Graphics.drawLine() machen da wirste ja blöd mit ^^und nen stern würde ich mit ein bissel mathematischer Trickserei programmieren... sofern er regelmäßig ist | |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Java Bu(e)ch(er) | Prototipping | Kaufberatung | 3 | 17.11.07 20:10 |
| Java??? | the.mole | Code Kitchen | 3 | 06.11.05 20:07 |
| Java | DolphVS | Code Kitchen | 2 | 29.09.05 19:28 |
| JAVA! gibts soziale java fachleute? | yakuza | Code Kitchen | 4 | 03.05.04 00:53 |
| Java und Java script | paya | Code Kitchen | 2 | 29.05.03 09:37 |