Zum Inhalt springen

ShamaN

Mitglieder
  • Gesamte Inhalte

    43
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von ShamaN

  1. Ich speichere ein Passwort in einer Textdatei, damit das Passwort nicht durch einfaches öffnen ersichtlich sein sollte, wollte ich das ganze etwas verschlüsseln. Also hab ich mir überlegt auf jedes byte des Passwortes einfach eine zahl drauf zu addieren. Das Problem ist jetz aber, dass wenn das "verschlüsselte" byte nicht in einem bestimmten Wertebereich(ich nehm ma 32-126 an) liegt, dann kommt nur noch Unsinn dabei raus. Wird wohl am Charset liegen nehm ich an. Jetzt weiss ich nicht so recht wie ich das Problem lösen soll. byte[] temp = Daten[i][x].getBytes(); for(int y = 0; y < Daten[i][x].length() ; y++) { temp[y] = (byte) (temp[y] + CODE); } Daten[i][x] = ""; for(int z = 0; z < temp.length; z++) { Daten[i][x] += (char)temp[z]; } Daten[][] ist ein String-Array CODE ist die Konstante die auf das Byte addiert wird. z.b. 100 Wenn jemand eine Idee hat wie ich ab 126 einen Überlauf auf 32 erzeuge, dann würde mir das auch reichen ^^
  2. Ich hab ein JTextField welches durch veränderung des Textes ein Event auslösen soll, was allerdings nicht funktioniert. Hier mal der relevante quellcode: //Klassendeklaration... public class Datensatz_Fenster extends JFrame implements ActionListener, InputMethodListener //Innerhalb der Klasse... public void inputMethodTextChanged(InputMethodEvent event) { System.out.println("test"); for(int i = 0; i < Felder.size(); i++) { System.out.println("test"); if(event.getSource() == (JTextField)Felder.get(i+3)) { System.out.println("test"); ((JTextField)Felder.get(i+3)).setBackground(Color.RED); } } } //Deklaration des Textfeldes... Felder.add(new JTextField("")); ((JTextField)Felder.get(Felder.size()-1)).addInputMethodListener(this); Außerdem hab ich noch die Methode getInputMethodRequests überlagert: public InputMethodRequests getInputMethodRequests() { return super.getInputMethodRequests(); } Aber das ganze funktioniert nicht. Es wird auch kein "test" ausgegeben. Was mach ich falsch?
  3. ok, hab mich falsch ausgedrückt: Daten werden aus einer mysql datenbank ausgelesen und in das JTextArea geschrieben, sind zuviele Zeilenumbrüche in den Daten vorhanden wird das JTextArea größer und die restlichen Komponenten auf dem Frame kleiner. Also prinzipiell auch beim ersten Aufruf. pack() hab ich nicht verwendet.
  4. Ich benutze grad zum ersten Mal ein GroupLayout und habe nun folgendes Problem: Zunächst sieht das ganze Design recht gut aus, dann schreibe ich etwas in das TextArea und wenns zuviel wird kommt das JScrollPane zum Einsatz. Wenn ich aber jetz das Fenster schließe, den Inhalt in eine Datenbank einlese, später das Fenster neu öffne und die Inhalt mit folgendermaßen in das JTextArea schreibe: t7 = new JTextArea(datensatz_details[1]); datensatz_details[1] ist ein String Dann vergrößert sich das JTextArea und die restlichen Komponenten werden auf dem Frame zusammen gequetscht. Zwar nur bis zu einem bestimmten Punkt bis dann endlich das JScrollPane auftaucht aber dieses Verschieben würde ich gern unterbinden. Ich habs bisher folgendermaßen versucht: Dimension d = new Dimension(); d.setSize(100, 50); t7.setMaximumSize(d); Ansonsten relevanter code: private JTextArea t7; Dimension d = new Dimension(); d.setSize(100, 50); t7 = new JTextArea(datensatz_details[1]); t7.setMaximumSize(d); JScrollPane temp1 = new JScrollPane(t7); //Frameeinstellungen setResizable(false); this.setBackground (Color.lightGray); this.setLocation(200,200); this.setSize (450,700); this.setVisible (true); this.toFront(); Das JTextArea füge ich logischerweise mit .addComponent(temp1) in das GroupLayout ein Restlicher Code dürfte irrelevant sein.
  5. Die NullPointer Exception ist immer noch da: Sieht für mich so aus als könne man keinen MouseListener an ein Component, in diesem Fall Label, anhängen Zeile 20 ist this.addMouseListener(new MyMouseListener());
  6. Kann das jetzt gerade leider nicht testen :/ Die Methode setBewertung ist da, hab sie nur nicht mitkopiert, wollts übersichtlich halten ^^
  7. In der Zeile this.addMouseListener((MouseListener) new MyMouseListener()); Und... hab ich möglicherweise nicht richtig verstanden.... Mein MyMouseListener sieht jetz so aus: import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; public class MyMouseListener extends MouseAdapter implements MouseListener { public void mouseClicked (MouseEvent me) { int x = me.getX(); int y = me.getY(); if (me.getButton() == 1) // Reaktion auf den Mausklick { if((x > 15 && y > 10) && (x < 30 && y < 25)) { ((myJLabel)me.getComponent()).setBewertung(1); ((myJLabel)me.getComponent()).setVisible(true); System.out.println("rot"); } if((x > 45 && y > 10) && (x < 60 && y < 25)) { ((myJLabel)me.getComponent()).setBewertung(2); ((myJLabel)me.getComponent()).setVisible(true); System.out.println("gelb"); } if((x > 75 && y > 10) && (x < 90 && y < 25)) { ((myJLabel)me.getComponent()).setBewertung(3); ((myJLabel)me.getComponent()).setVisible(true); System.out.println("grün"); } } } } MyJLabel public class myJLabel extends JLabel { private int bewertung = 1; public myJLabel(String text, int bewertung) //Konstruktor { super.addNotify(); setText(text); this.bewertung = bewertung; this.addMouseListener((MouseListener)new MyMouseListener()); } //Methoden public myJLabel getComponent() { return (this); } public int getBewertung() Fehlen noch ein paar unrelevante Zeilen Code EDIT: Irgendwo muss ich auch nochmal meinen Frame aktualisieren?
  8. In der Klasse public class myJLabel extends JLabel Im Konstruktor public myJLabel(String text, int bewertung) //Konstruktor { super.addNotify(); setText(text); this.bewertung = bewertung; this.addMouseListener((MouseListener) new MyMouseListener()); } bekomme ich jetz eine NullPointerException ^^
  9. So... Nun möchte ich durch Anklicken eines bestimmten Punktes auf meinem myJLabel die Variable private int bewertung = 1; in der Klasse myJLabel ändern. Aso hab ich eine Klasse MyMouseListener geschrieben, in welcher ich mit getComponent() das myJLabel haben möchte, was natürlich nicht funktioniert ^^ import java.awt.event.MouseEvent; public class MyMouseListener { public void mouseClicked (MouseEvent me) { int x = me.getX(); int y = me.getY(); if (me.getButton() == 1) // Reaktion auf den Mausklick { if((x > 15 && y > 10) && (x < 30 && y < 25)) { me.getComponent().setBewertung(1); } if((x > 45 && y > 10) && (x < 60 && y < 25)) { me.getComponent().setBewertung(2); } if((x > 75 && y > 10) && (x < 90 && y < 25)) { me.getComponent().setBewertung(3); } } } } darum habe ich die Methode getComponent in der Klasse myJLabel eingefügt public myJLabel getComponent() { return (this); } was natürlich auch nicht funktioniert ;D Außerdem habe ich folgende Zeile im Konstruktor des myJLabel eingefügt: this.addMouseListener(new MyMouseListener()); welches auch nen Fehler auswirft: Eclipse schlägt mir vor die Zeile folgendermaßen zu ändern: this.addMouseListener((MouseListener) new MyMouseListener()); Sieht für mich aber irgendwie zu einfach aus. Jemand ne Ahnung was ich falsch mache? bzw. was ich machen muss um das ganze zum Laufen zu bringen?
  10. Dann werden mir die im ActionListener erstellen Textfelder aber immer noch nicht auf dem Frame angezeigt. Dieser Code müsste allerdings auch fehlerhaft sein: public void actionPerformed (ActionEvent e) { if (e.getSource()==newdata) { for(int i=0; i<4; i++) { Felder.add(new JTextField("")); p1.add((JTextField)Felder.get(Felder.size())); } } }
  11. Folgendes neues Problem: Ich erstelle mit dem Konstruktor ein Frame, darin setze ich TextFelder und Labels in ein JPanel, welches ich als protected in der Klasse deklariert habe: protected JPanel p1 = new JPanel(); //Innerhalb des Konstruktors... p1 = new JPanel(); p1.setLayout(new GridLayout(y, x)); p1.add(new JLabel); Jetzt möchte ich aber durch Klicken eines Buttons neue Textfelder in das Panel einfügen... Da dachte ich mir folgendes... public void actionPerformed (ActionEvent e) { if (e.getSource()==newdata) { for(int i=0; i<4; i++) { x++; Felder.add(new JTextField("")); p1.add((JTextField)Felder.get(Felder.size())); } } } Felder ist eine ArrayList. Problematisch ist noch, dass das GridLayout mit der Anzahl y an Zeilen deklariert wurde. y wird dem Konstruktor übergeben. EDIT: Sinn des ganzen ist ein GUI welches mit einer mySql-Datenbank kommuniziert Bei dem aktuellen Problem möchte ich über den Button "Neuen Datensatz" eine neue Zeile aus Textfeldern erstellen, welche sich in die Datenbank speichern lässt.
  12. Soo... Jetzt habe ich weiter programmiert und möchte eine Menüleiste in mein Programm einführen. Das habe ich auch gemacht, allerdings wird anstatt der Menüleiste der Hintergrund gezeigt, also ein Teil der Eclipse, als ob die Menüleiste durchsichtig wär. Dieser bleibt auch wenn ich das Fenster verschiebe. Wenn ich einmal darauf klicke kommt dann meine Menüleiste, allerdings wenn ich auf ein Menü klicke, werden die Menüitems von meinen Gridlayout überdeckt. Andersrum wäre es mir logischerweise lieber Hier mal der relevante Code: Panel p1 = new Panel(); p1.setLayout(new GridLayout(y+a, x)); // Layoutmanger p1.add(new JLabel("Bewertung")); // Überschriften ausgeben p1.add(new JLabel("Vorgang")); p1.add(new JLabel("Bearbeiter")); p1.add(new JLabel("Fälligkeit")); p1.add(new JLabel("Anmerkung")); JMenuBar menuBar = new JMenuBar(); JMenu fileMenu = new JMenu( "Datei" ); fileMenu.add(new JMenuItem("Datenbank öffnen")); fileMenu.add(new JMenuItem("Speichern")); fileMenu.add(new JMenuItem("Beenden")); menuBar.add( fileMenu ); this.setJMenuBar( menuBar ); this.add(p1); EDIT: Problem gelöst^^ hab Panel durch JPanel ersetzt, vllt sollte ich mal länger nachdenken ^^
  13. ich weiss nicht ob ich das jetzt richtig verstanden habe, ich hab mal folgendes verändert: //In der Klasse Fenster... for(int i=y; i>0; i--) { p1.add(new myJLabel("")); // Datensätze p1.add(new JTextField("")); p1.add(new JTextField("")); p1.add(new JTextField("")); p1.add(new JTextField("")); } public class myJLabel extends JLabel { public myJLabel(String text) //Konstruktor { super.addNotify(); setText(text); } public String getText() { return super.getText(); } public synchronized void setText(String text) { super.setText(text); } public void paint(Graphics g) { super.paint(g); g.setColor(Color.RED); g.drawOval(50,60,15,15); } } Jetzt erzeuge ich doch ein Objekt meiner eigenen Klasse myJLabel welches übermalt werden können sollte? PS: Ich hab das ganze jetzt mal in swing umgeändert. EDIT: funktioniert jetzt, Ich hab die Koordinaten vom Frame aus eingestellt und nicht vom Label Danke
  14. Jetzt hab ich nochmal ein wenig gewerkelt aber ein Kreis fehlt immer noch ^^ import java.awt.*; public class Fenster extends Frame { Fenster() { super("fenster"); int x=5; int y=8; int a=2; //Anzahl der "nicht-Datensätze" im GridLayout Panel p1 = new Panel(); p1.setLayout(new GridLayout(y+a, x)); // Layoutmanger p1.add(new Label("Bewertung")); // Überschriften p1.add(new Label("Vorgang")); p1.add(new Label("Bearbeiter")); p1.add(new Label("Fälligkeit")); p1.add(new Label("Anmerkung")); for(int i=y; i>0; i--) { p1.add(new Label()); // Datensätze p1.add(new TextField("")); p1.add(new TextField("")); p1.add(new TextField("")); p1.add(new TextField("")); } p1.add(new Button("Speichern")); this.add (p1); //Layout auf das Frame setzen this.addWindowListener(new WindowListener(true)); this.setBackground(Color.lightGray); this.setSize(x*100,y*40); this.setVisible(true); } public void paint (Graphics g) { //g.setColor(Color.RED); //g.drawOval (40, 130, 15, 15); } } public class myLabel extends Label { public void paint(Graphics g) { super.paint(g); g.setColor(Color.RED); g.drawOval(50,150,15,15); } } main und WIndowListener wie vorher auch schon. Die Anordnung auf dem Frame sitzt bis auf den fehlenden Kreis. Muss ich vllt noch einen Konstruktor für meine Klasse myLabel schreiben und den von der Klasse Fenster aufrufen wenn ich auf dem jeweiligen Label zeichnen möchte?
  15. Tut mir leid, ich hab die Kommentare, die du mir in den Quellcode geschrieben hast völlig überlesen, jetz wird mir einiges klar ^^. Ist schon was länger her, dass ich Java programmiert hab und hab mir für das Programm Code aus meinen damaligen Programmen rauskopiert. Da hab ich awt einfacher verstanden. ^^ Die Kommentare sind hilfreich aber will mir nicht ganz einleuchten. Jetzt hab ich mich mal etwas informiert wie ich die paint Methode eines Labels überschreibe und kam zu folgendem Ergebnis: class test extends label{ void paint(Graphics g) { super.draw(g) g.drawoval(123,12,345,23); }} Kann das aber leider nicht mehr vor morgen testen.
  16. weil dann kein Kreis auftaucht ^^ Ich nahm an, dass ich nicht auf ein Label zeichnen kann. Folgendes funktioniert z.b. nicht: public class Fenster extends Frame { Fenster() { super("fenster"); int x=5; int y=8; Panel p1 = new Panel(); setLayout(new GridLayout(y, 1)); // Layoutmanger add(new Label("Bewertung")); // Überschriften add(new Label("Vorgang")); add(new Label("Bearbeiter")); add(new Label("Fälligkeit")); add(new Label("Anmerkung")); for(int i=y; i!=2; i--) { add(new Label("")); // Datensätze add(new TextField("")); add(new TextField("")); add(new TextField("")); add(new TextField("")); } this.addWindowListener(new WindowListener(true)); this.setBackground(Color.lightGray); this.setSize(x*100,y*50); this.setVisible(true); } public void paint (Graphics g) { g.drawOval (40, 130, 15, 15); } } public class main { public static void main(String[] args) { Fenster f = new Fenster(); } } public class WindowListener extends WindowAdapter { private boolean ende; public WindowListener (boolean ende) { this.ende = ende; } //Konstruktoren public WindowListener () { this.ende = false; } public void windowClosing (WindowEvent event) //Methoden { event.getWindow().setVisible(false); event.getWindow().dispose(); if (ende) { System.exit(0); } } } Alles bis auf den Kreis wird angezeigt
  17. Ich brauche ein GUI mit 5 Spalten und beliebig vielen Zeilen. In die erste Zeile sollen 5 Labels. In allen darauffolgenden Zeilen soll die erste Spalte leer sein( weil ich da mit der Methode paint Kreise rein malen möchte.) In alle restliche Zellen sollen Textfelder. Also mach ich zwei GridLayouts(1. einspaltig, 2.zweispaltig) und packe diese in ein Borderlayout und setze das 1. auf West und das 2. auf "East"... Aber das ganze funktioniert nicht. Hier der Quelltext dazu: import java.awt.*; import java.awt.event.*; import javax.swing.*; class Fenster extends Frame { public Fenster() { int x=5; int y=8; Panel p1 = new Panel(); setLayout(new GridLayout(1, y)); // Layoutmanger p1.add(new Label("Bewertung")); // Überschriften Panel p2 = new Panel(); setLayout(new GridLayout(x-1, y)); // Layoutmanger p2.add(new Label("Vorgang")); p2.add(new Label("Bearbeiter")); p2.add(new Label("Fälligkeit")); p2.add(new Label("Anmerkung")); for(int i=y; i!=2; i--) { p2.add(new TextField("")); // Datensätze p2.add(new TextField("")); p2.add(new TextField("")); p2.add(new TextField("")); } Panel p0 = new Panel(); setLayout(new BorderLayout()); p0.add(p1,"West"); p0.add(p2,"Center"); this.add(p0); this.add(new Button("Speichern")); this.addWindowListener(new WindowListener(true)); setBackground (Color.lightGray); setSize (500 ,(y+2)*30); setVisible (true); } Kann mir jemand helfen?

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...