Zum Inhalt springen

Wayne

Mitglieder
  • Gesamte Inhalte

    53
  • Benutzer seit

  • Letzter Besuch

  1. Wayne

    Brauche hilfe bei bluej

    Benutze doch die Code-Tags wenn du soviel Quellcode postest. Ich kenne jetzt BlueJ nicht wirklich aber ich versuche es trotzdem mal: private Ellipse kreis; public void WandErzeugen1(){ for(int i=1;i<=40; i++){ kreis = new Ellipse(); kreis.groesseSetzen(10,10); kreis.positionSetzen(i*10,0); kreis.farbeSetzen("blau"); } } public void WandAnzeigen1(){ for(int i=0;i<=40; i++){ kreis.anzeigen(); } } Du hast eine einzige Variable kreis, stell dir das am besten als eine Adresse vor (Fachbegriff ist hier "Referenz"). In der Methode WandErzeugen1 erstellst du dann mit "kreis = new Ellipse()" eine neue Ellipse und schreibst die Adresse dieser neuen Ellipse auf in dem du sie in der Variable speicherst. Beim nächsten Durchlauf erzeugst du wieder eine Ellipse und speicherst die Adresse in der Variable. Das Problem dabei ist, das die alte Adresse dazu weggeschmissen werden muss. Das heißt also in der Variable steht nur noch die neue Adresse und die alte ist "verloren". Wenn du nun WandAnzeigen1 auf rufst steht in der Variable nur die Adresse der letzten erzeugen Ellipse also wird auch nur die letzte angezeigt. Um dein Problem zu lösen sehe ich zwei Möglichkeiten. 1. Methode WandAnzeigen1 löschen und den Aufruf "kreis.anzeigen()" mit in die WandErzeugen1() Methode auf nehmen. private Ellipse kreis; public void WandErzeugen1(){ for(int i=1;i<=40; i++){ kreis = new Ellipse(); kreis.groesseSetzen(10,10); kreis.positionSetzen(i*10,0); kreis.farbeSetzen("blau"); kreis.anzeigen(); } } 2. Verwenden eines Arrays zum Speichern der Adressen. private int anzahlKreise = 40; private Ellipse[] kreise = new Ellipse[anzahlKreise]; public void WandErzeugen1(){ Ellipse kreis; for(int i=0;i<kreise.length; i++){ kreis = new Ellipse(); kreis.groesseSetzen(10,10); kreis.positionSetzen(i*10,0); kreis.farbeSetzen("blau"); kreise[i] = kreis; } } public void WandAnzeigen1(){ for(int i=0;i<kreise.length; i++){ kreise[i].anzeigen(); } } In dem Beispiel wird ein Array, also eine Liste, von Ellipsen verwenden "Ellipse[] kreise = new Ellipse[anzahlKreise];". die Variable anzahlKreise gibt an, wieviele Kreise die Liste maximal auf nehmen kann. In WandErzeugen1() wird pro Schleifendurchlauf eine neue Ellipse erzeugt und die Adresse an einer neuen Stelle im Array abgelegt. In WandAnzeigen1() wird das Array durchlaufen um jede Ellipse anzuzeigen. Beachte, dass ein Array immer mit 0 beginnt. ALso sind die Stellen bei einem Array mit maximal 40 Stellen von kreise[0] bis kreise[39] durchnummeriert. PS. Ich habe den Code nicht getestet, d.h. er könnte Fehler enthalten.
  2. Ähm definitiv würde ich nicht sagen. Unsere Klasse musste nach der Zwischenprüfung wieder in die BS. Das einzige was mMn Sicherheit verschaffen wird: beim Klassenlehrer bzw. in der BS nachfragen.
  3. Wayne

    Byte in char umwandeln

    Der Modulo-Operator "%" dürfte dir helfen. z.B. temp[y] = (byte) (temp[y] + CODE)%(MAX+1)+MIN;
  4. Ich bin jetzt zwar kein Profi was das alles angeht, aber mir persönlich erscheint die ganze Beschreibung etwas ZU ausführlich. Du hast quasi schon im Antrag alles so detailliert ausgearbeitet, das dir so ziemlich alle Entscheidungsmöglichkeiten bereits im Vorwege genommen worden sind. Dein Projektname ist zu lang. Es soll ein Name sein und keine Kurzbeschreibung oder würdest du dann in der Doku / Präsi diesen ~25 Wörter langen "Namen" hinschreiben? In der Projektbeschreibung, kommt meines Erachtens die Darstellung der jetzigen Situation, das hast du zwar, sollte aber deutlicher werden, und die Probleme, die daraus resultieren. Dann was du machen möchtest um diese Aufgabe / dieses Problem zu lösen, aber nicht zu detailliert. Im Grunde würden die ersten beiden Absätze der Beschreibung reichen; jedoch dahin gehend angepasst, was genau der IST-Zustand ist und warum das so doof ist sowie z.B. erwähnen, das deine Aufgabe auch darin besteht die genauen Anforderungen zu ermitteln. Das Entwickeln des Soll-Konzeptes hast du nämlich durch den restlichen Teil der Beschreibung quasi übersprungen. Wie gesagt: das ist nur meine Meinung und die kann auch völlig daneben liegen.
  5. Wayne

    String escapen

    Da es sich hier, wie bereits gesagt, um reguläre Ausdrücke handelt und, wie du richtig erkannt hast, du entsprechende Sonderzeichen escapen musst, fällt mir persönlich jetzt kein besserer Weg ein als: private String replaceThis(String source, String expr, String rplmnt){ expr.replaceAll("\\+", "\\+"); source.replaceAll(expr, rplmnt); return source; } Ich habs jetzt nicht getestet aber ich denke du verstehst was ich meine. Zugegeben es ist etwas unglücklich aber so spontan wüsste ich keine bessere Lösung. Hast du mal geschaut was Google dazu sagt?
  6. Du kannst auch alternativ die Methode setViewportView(Component) bzw. setViewPort(JViewPort) aufrufen. Und Überraschung: All das und noch viel mehr steht wo? Genau! In der Java API Doku: JScrollPane
  7. Wayne

    String escapen

    Nicht "Java selbst" sieht das + als Steuerzeichen an, sondern die Implentierung von regulären Ausdrücken in Java tut dies, welche eben in ReplaceAll, split und noch so einige andere Methoden benutzt werden. Schaue dazu am besten mal in die Java Doku: Pattern. Ich hab allerdings noch nicht ganz genau verstanden was du wirklich möchtest. Vielleicht kannst du ein etwas anschaulicheres/ausführlicheres Beispiel wählen.
  8. Ein letzter Versuch: Benutze bitte die CODE-Tags wenn du Code postest. Beim nächsten mal ohne wird keine Hilfe mehr von mir kommen. Dein Quellcode zeigt ganz eindeutig, dass du nur begrenzte Kenntnisse in Java / OOP-Programmierung allgemein zu haben scheinst. Das ist nicht schlimm, da jeder einmal anfängt, aber du solltest dir wirklich noch einmal das ein oder andere (Online-) Buch oder Tutorial durchlesen. Dein Code strotz nur so von Fehlern, das es am besten ist du fängst neu an und arbeitest dich in _kleinen_ Schritten vorwärts. @Dragon8: Mich beschleicht das Gefühl, dass er das nicht hat.
  9. Für die Zukunft: Wenn du hier Quellcode postest, dann mach dir bitte die mühe es in CODE-Tags einzufügen. SO kann man den Code besser vom Rest des Textes unterscheiden und eventuelle Einrückungen bleiben erhalten. Ich werde mal deine Code kommentieren vielleicht hilft es dir. import java.awt.*; import java.awt.event.*; import javax.swing.*; //Du importierst das gesamte swing package benutzt aber nur awt. //Ich weiß auch nicht warum du nur awt benutz. Hat das einen //besonderen Grund? Da awt als veraltet angesehen werden kann, //wüsste ich jetzt keinen Grund warum man nicht swing benutzen sollte. class Fenster extends Frame { public Fenster() { int x=5; int y=8; Panel p1 = new Panel(); setLayout(new GridLayout(1, y)); //Du muss hier aufpassen! Das setLayout() wird hier für das Frame //aufgerufen nicht, wie du vielleicht wolltest, für das Panel. p1.add(new Label("Bewertung")); // Überschriften Panel p2 = new Panel(); setLayout(new GridLayout(x-1, y)); //hier wieder setLayout auf das Frame 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--) { //üblicherweise wird bei bei for-schleifen mit <, >, <= oder >= gearbeitet //und nicht mit != bzw == 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()); //setLayout.... p0.add(p1,"West"); //Hier solltest du p0.add(p1, BoderLayout.WEST); aufrufen p0.add(p2,"Center"); this.add(p0); this.add(new Button("Speichern")); //du hast beim letzten setLayout dem Frame das Borderlayout vergeben //und nun willst du p0 und den Button hinzufügen. wenn du dann keine //orientierung (z.B. Borderlayout.SOUTH) mitgibst werden die Komponenten //automatisch im Center eingefügt. So kommt es das der Button quasi "über" //dem Panel liegt this.addWindowListener(new WindowListener(true)); //diese Initialisierung von WindowListener ist schlichtweg nicht kompilierfähig, //da es sich hierbei um ein Interface handelt. setBackground (Color.lightGray); setSize (500 ,(y+2)*30); setVisible (true); } Wahrscheinlich ist es besser du beschäftigst dich noch einmal Grundlegend mit Java. Eine gute Quelle ist hier OpenBook Java ist auch eine Insel; Kapitel 15 und 16 handeln dabei von GUI-Programmierung aber es könnte die sicherlich nicht schaden auch nochmal den Rest zu "überfliegen". Aber auch ein Blick in die Java-Api kann nie schaden (z.B. steht dort auch drin wie man die Layouts benutzt).
  10. Wayne

    Programmier Hilfe

    Und wo genau ist jetzt dein Problem? Hier wird mit Sicherheit keiner deine Hausaufgaben erledigen. In dieser Linksammlung hier im Unterforum wirst du sicherlich einige Quellen finden in der steht wie man z.B. eine Exception wirft.
  11. breeZer87 hat Recht und setMiniumSize() ist erst ab Java 6 verfügbar. Java Doc Und da du sagst, du arbeitest mit Java 5, dürfte der Code gar nicht erst kompilieren. Unter "aber das tut eben nicht das, was ich will" verstehe ich persönlich etwas anderes. [Edit:] Ok, offensichtlich gibt es setMinimumSize auch unter Java 5. Java Doc Scheinbar existieren da Unterschiede. während Java 6 MinimumSize von java.awt.Window kommt ists in Java 5 java.awt.Component. Keine Ahnung wo genau da die Unterschiede bestehen
  12. Erstell eine neue Klasse. Copy&Paste meine komplette main-Methode in die Klasse. Füge die nötigen imports ein. Führe die Klasse aus. Wenn es dann immer noch nicht funktioniert, dann ist etwas beim kopieren verloren gegangen, wir verstehen uns grundlegend falsch oder ich hab ein "anderes Java" als du. Ich bekomme mit dem von mir gezeigten Code den Frame nicht kleiner als die angegebene MinimumSize sogar ohne einen eigenen Listener.
  13. Versuchs mal damit. import java.awt.Dimension; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; public class Fraime { /** * @param args */ public static void main(String[] args) { JFrame frame = new JFrame("FrameMyAss"); frame.setLayout(new GridLayout(0,2)); frame.setMinimumSize(new Dimension(400,200)); frame.setPreferredSize(new Dimension(500,500)); frame.add(new JButton("Klacky")); frame.add(new JButton("Klecky")); frame.add(new JButton("Klicky")); frame.add(new JButton("Klocky")); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } }
  14. Mag sein, dass ich da etwas nicht so ganz verstehe aber warum benutzt du nicht einfach wie von speedi vorgeschlagen setMinimumSize()? JFrame frame = new JFrame(); frame.setMinimumSize(new Dimension(500,500)); [...] Somit ist es nicht möglich das Frame kleiner als die von dir gewünschte Größe zu ziehen. Dabei "springt" nichts zurück sondern wie von dir gewünscht blockiert das Frame den Versuch es noch kleiner zu machen.
  15. Höchst wahrscheinlich liegt es daran, dass du awt und Swing komponenten gemischt verwendet hast. Ich tippe mal du hast eine MenuBar (awt) erstellt anstelle einer JMenuBar (swing). Bedenke, dass es bei einem Frame zum einen setMenuBar aber auch setJMenuBar gibt.

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...