ShamaN
-
Gesamte Inhalte
43 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von ShamaN
-
-
einfach
objektorientiert
verteilt
interpretiert
robust
architekturneutral
portabel
performant
nebenläufig
dynamisch
Das hab ich mal schlicht hier rein kopiert ^^
-
Hi,
Also ich schreibe derzeit ein Java-Programm, hauptsächlich muss das gute Stück auf Mac os x laufen. Da ich aber keine Erfahrung mir Mac habe muss ich hier mal etwas nachfragen.
Derjenige, für den das Programm ist sagte mir, dass es bei mac normal wäre wenn ein Programm sich nicht vollständig mit dem Klick auf den roten Punkt beendet. Um es vollständig zu beenden wäre "apfeltaste + q" bzw. der dazugehörige Menüeintrag zu benutzen.
Ich will nun das Event, dass dadurch ausgelöst wird abfangen um z.B. noch zu speichern.
Stimmt soweit alles was ich geschrieben hab bzw. weiss jemand sogar wie ich dieses Event abfange?
-
Rucksack-s: ß
So hab ich das in der Grundschule gelernt
windowClosing fängt aber eben nicht das Event "apfeltaste + q" ab, lediglich das Event durch Anklicken des roten Punktes.
-
Danke, die Konsole war sehr hilfreich
Ich hatte ungünstigerweise ein rucksack-s in einem Klassennamen verwendet ^^
Jetzt möchte ich das ganze auch für Mac einrichten. Bei Mac lassen sich Programme aber nicht durch einen Klick auf das x (roter Punkt) beenden ( hab ich mir sagen lassen), sondern vielmehr durch die apfeltaste+q bzw. in dem dazugehörigen Menü. Wie kann ich also das jetzt abfangen um davor noch eine Abfrage ob gespeichert werden soll zu erstellen?
-
hi,
ich will, dass wenn ich auf das x- Zeichen meines Frames klicke, eine Abfrage kommt ob die Daten vorher gespeichert werden sollen oder nicht.
Das funktionier in Eclipse auch wunderbar aber wenn ich jetzt das ganze in eine jar Datei packe und diese starte dann passiert gar nix auf den klick des x-Zeichens.
Es funktioniert erst wenn ich das package nochmal im gleich verzeichnis habe wie die jar-Datei, obwohl das package selbst in der jar ist. Das ist aber nicht Sinn der Sache.
Wo liegt das Problem?
-
Ok also mehr oder weniger funktioniert das Ganze jetzt, Hab den MouseListener auf das JScrollPane getan und der Scrollbalken lässt sicht auch Scrollen wenn ich genügen Komponenten einfüge, allerdings werden die ganzen Komponenten erst dünner. Die sollten natürlich so groß bleiben wie sie sind. Kann man das einstellen?
setMinimumSize
setMaximumSize
setSize
sind total unbrauchbare methoden wenns um das einstellen der Größe von Komponenten geht....
-
JPanel asdf = new JPanel();
BorderLayout layout = new BorderLayout();
asdf.setLayout(layout);
asdf.add(p1, "Center");
asdf.add(p3, "East");
JScrollPane scroll = new JScrollPane(asdf);
scroll.setVerticalScrollBarPolicy(scroll.VERTICAL_SCROLLBAR_ALWAYS);
this.getContentPane().add(scroll);
sieht auf den ersten Blick gut aus, der ScrollBalken ist da wo er sein soll aber man kann auch nicht scrollen wenn datensätze über den Desktop hinaus gehen und der MouseListener gibt den geist auf
Also wie muss des gemacht werden?
Hab mich bisher von den Methoden eher fern gehalten ^^
Bekommt man mit drawOval eigtl auch iwie (richtig) runde kreise hin?
-
Hallo,
Ich benötige einen Scrollbalken für mein Frame, welcher automatisch erscheint, falls der Inhalt des Frames zu groß wird(während der Laufzeit). Die maximale Größe sollte einstellbar sein oder eben den Desktop-Einstellungen entsprechen. Horizontale Scrollbalken sind nicht nötig.
Hier mal ein Bild meiner Oberfläche:
imgBOX.de - Flirten - Chatten - an Freunde verschicken
Mein JFrame hat das Layout BorderLayout, welches zwei GridLayouts enthält. Eins in Center, welches die ersten 5 Spalten enthält, das 2te die letzten beiden mit den Buttons.
Das Bild zeigt die maximale Anzahl an Datensätzen(24), wenn ich einen weiteren anfüge dann verschwindet dieser bereits außerhalb des Bildschirms(1400x900).
Mein JFrame hat einen MouseListener, welcher durch Anklicken der Kreise, Diese ausfüllt. Als ich das BorderLayout einem eigenen JPanel zugefügt habe, Dieses in ein JScrollPane gepackt und dem JFrame zugefügt habe, hat der MouseListener nicht mehr funktioniert.
Übrigens ein weiteres Problem...
Der Name des Programms, "DVS", wird nicht in der Mac-Eigenen Menü-leiste angezeigt.Stattdessen steht dort der package-name. Hab versucht das mit folgendem Code richtig einzustellen. Hat allerdings nicht funktioniert.
super("DVS"); String lcOSName = System.getProperty("os.name").toLowerCase(); boolean IS_MAC = lcOSName.startsWith("mac os x"); if(IS_MAC == true) { System.setProperty("com.apple.mrj.application.apple.menu.about.name", "DVS"); System.setProperty("com.apple.macos.smallTabs", "true"); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } SwingUtilities.updateComponentTreeUI(this); }
-
ah ok, ich hatte bachslashes anstatt slashes benutzt, dass das jetzt mit slashes auch unter windows funktioniert ist normal?
-
Dann dürfte es doch aber auf einem Windows auch nicht funktionieren?
-
Soo, auf mein Windows läuft das Programm mit der jar wunderbar, aber auf einem Mac gibts Probleme. Es wirft beim Verbinden mit einer MySql Datenbank eine ClassNotFoundException aus mit dem Inhalt "com.mysql.jdbc.Driver". Wieso funktioniert das auf einem Mac nicht?
-
ich lese ein JTextArea mit automatischem zeilenumbruch aus und speichere es in eine textdatei, dabei entstehen kleine eckige zeichen bzw. manchmal auch leerzeilen, die wohl einer enter-taste entsprechen. Das ganze ist dann beim zeilenweisen auslesen recht hinderlich, kann ich diese formatierungen beim schreiben entfernen?
Also... erstellt wird das JTextArea:
JTextArea t7 = new JTextArea(); t7.setLineWrap(true); t7.setWrapStyleWord(true); JScrollPane temp1 = new JScrollPane(t7);
ausgelesen mit getText()datensatz_details[1] = t7.getText();
Dann wird es in eine mySql-Datenbank gespeichert:stmt.executeUpdate( "UPDATE "+tabelle+" SET Beschreibung= '"+datensatz_details[1]+"' WHERE ID = '"+Felder_ID.get(Buttonnummer)+"'");
Jetzt möchte ich ein Backup der Tabelle erstellen:details[1] = rs.getString("Beschreibung");
Jetzt schreibe ich das ganze in ein Array sicherung[][]sicherung[i][6] = details[1];
und schreibe das ganze in eine Text-datei:BufferedWriter out = new BufferedWriter(new FileWriter(getName()+".txt"));
mit dem Befehlout.write(serverdaten[i]);
Vermutlich sind diese Zeichen auch schon in der Datenbank vorhanden.
Mehr Code zu posten wäre zu umfangreich...
-
ah, jetz hab ich´s
Class-Path: . .\iText-2.1.5.jar .\iText-rtf-2.1.5.jar .\iText-rups-2.1.5.jar .\mysql-connector-java-5.1.7/mysql-connector-java-5.1.7-bin.jar
wo ich gerade nen thema offen hab, ich hab noch nen völlig anderes problem ^^ ich lese ein JTextArea mit automatischem zeilenumbruch aus und speichere es in eine textdatei, dabei entstehen kleine eckige zeichen bzw. manchmal auch leerzeilen, die wohl einer enter-taste entsprechen. Das ganze ist dann beim zeilenweisen auslesen recht hinderlich, kann ich diese formatierungen beim schreiben entfernen?
-
und wie? ^^
Manifest-Version: 1.0
Created-By: 1.6.0_12 (Sun Microsystems Inc.)
Class-Path: . .iText-2.1.5.jar .iText-rtf-2.1.5.jar .iText-rups-2.1.5.jar .mysql-connector-java-5.1.7/mysql-connector-java-5.1.7-bin.jar
Main-Class: asdf.main
...?
-
ok, danke, das programm funktioniert nun, aber die eingebundenen JAR´s wie mysql-connector-java-5.1.7-bin.jar, iText-2.1.5.jar, iText-rtf-2.1.5.jar und iText-rups-2.1.5.jar tun jetzt nichmehr, wie verweis ich denn jetz auf die? die liegen im selben ordner wie meine jar.
-
meien jar datei enthält den ordner bin, mit dem unterordner asdf, in der sind meine 14 klassen gelistet, inklusive main.class.
Außerdem enthält sie noch META-INF mit der der Datei MANIFEST.MF, welche die folgendes enthält: "Manifest-Version: 1.0
Created-By: 1.6.0_12 (Sun Microsystems Inc.)
Main-Class: asdf.main"
-
eclipse ^^
-
jetzt funktioniert der jar befehl, allerdings kommt beim starten:
Exception in thread "main" java.lang.NoClassDefFoundError: asdf/main
Caused by: java.lang.ClassNotFoundException: asdf.main
at java.netURLClassLoad$1.run<Unknown Source>
at java.security.AccessController.doPrivileged<Native Method>
at java.net.URLClassLoader.findClass<Unknown Source>
at java.lang.ClassLoader.loadClass<Unknown Source>
at sun.mist.Launcher$AppClassLoader.loadClass<Unknown Source>
at java.lang.ClassLoader.loadClass<Unknown Source>
at. java.lang.ClassLoader.loadClassInternal<Unknown Source>
mit dem befehl werden allerdings die ganzen eingebundenen jar dateien auch nicht mit in die neue datei einbezogen...
-
mit rechtsklick auf das projekt->export
kannst du mir des mit der konsole genauer erklären?
ich hab jar cmf Manifest.txt run.jar bin\asdf im Verzeichnis des Projektes angegeben und es wird mir gesagt dass der befehl jar nicht gefunden werden konnte
-
obwohl es sich hunderte seiten von google darüber finden lassen schaffe ich es mit deren hilfe nicht so eine verdammte datei zu erstellen...
also wenn ich über export-> runable jar file eine solche datei erstellen möchte dann kommt der fehler:
jar creation failed. see details for additional information.
die details sind:
"unable to open zip file
unable to open zip file"
wenn ich jetz über export-> jar file es versuche, zudem die manifest.txt einbinde:
"Manifest-Version: 1.0
Main-Class: asdf.main"
asdf ist das package, main die klasse zum starten
mit abschließendem zeilenumbruch bekomme ich beim starten einen fehler.
ich rufe meine jar datei mit der folgenden verknüpfung auf:
C:\WINDOWS\system32\java.exe -jar "C:\Dokumente und Einstellungen\asd\workspace\Datenbank-Vorgang\run.jar"
der Fehler lautet:
"unable to access jar file" und dann der pfad
wenn ich die manifest.txt auf main.asdf statt asdf.main ändere, dann erscheint die meldung:
"Failed to load Main-Class manifest attribute from" und dann der pfad
-
naja also ich hab jetzt
String lcOSName = System.getProperty("os.name").toLowerCase(); boolean IS_MAC = lcOSName.startsWith("mac os x"); if(IS_MAC == true) { System.setProperty("apple.laf.useScreenMenuBar", "true"); //System.setProperty("com.apple.mrj.application.apple.menu.about.name", "WikiTeX"); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } System.setProperty("com.apple.macos.smallTabs", "true"); }
angefügt in der Hoffnung dass jetzt auch die MenüItems richtig angezeigt werden. Außerdem habe ich Informationen aus und in Textdateien gelesen etwa so:BufferedWriter out = new BufferedWriter(new FileWriter("speicher.txt"));
Kommt da nicht native Code zum Einsatz? Funktioniert das dann auch unter Mac? Und die Funktionpublic void centerWindow(Window window) { Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = window.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } window.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); }
wirft auch keine Fehler aus?
VMware hab ich nichts für Mac auf Windows gefunden
-
Hi,
Ich habe eine relativ großes Programm geschrieben, welches jetzt auch unter Mac laufen soll. Ich hab das bisher unter Windows geschrieben.
Da ich leider keinen Mac zur verfügung habe würde ich gern wissen ob es eine art simulator für Mac gibt, den ich nutzen könnte ob mein Programm funktioniert.
Weiß dazu jemand etwas?
Außerdem habe ich gelesen, dass wenn man Swing benutzt ein paar Anpassungen vornehmen muss, welche wären das? Hab dazu bisher leider keine ordentliche Seite gefunden.
-
Java Hamster
in Java
sind garantiert noch fehler drin, die ich jetz nicht vermag zu suchen
public class main { public static void main(String[] args) { int n = 2; int felderanzahl = 10; feld felder[] = new feld[felderanzahl]; for(int i = 0; i < felderanzahl; i++) { felder[i] = new feld(); } for(int i= 0; i < felderanzahl; i++) { if(countNischen(felder[i]) == n) { //Korn ablegen } else { //nichts tun } } } public int countNischen(feld feld) { if(feld.getNische() == true) { return 1 + countNischen(feld+1); //offensichtlich fehlerhaft } else { return 0; } } private class feld { private boolean Nische; feld() { Random r = new Random(); int zufallszahl = Math.abs(r.nextInt() % 2); if(zufallszahl == 0) setNische(false); else setNische(true); } public void setNische(boolean a) { this.Nische = a; } public boolean getNische() { return Nische; } } }[/code]
-
Ich füge mal ein paar Kommentare in deinen Code ein
klar, mit allen objekten links vom zuweisungsoperator(=) muss lediglich ein objekt vom gleichen typ des rückgabewertes der funktion rechts vom zuweisungsoperator stehenvoid main() { /* da die funktion laufeUndSammle() einen rückgabewert hat solltest du den auch auffangen z.B. int[] anzahl = laufUndSammle(); anzahl2 ist jetz das gleiche wie das anzahl welches du mit return zurückgibst, nicht aber das selbe*/ laufeUndSammle(); /* gleiches gilt hier, jedoch fehlt anzahl als parameter */ funktionZumSortieren(); } int [] laufeUndSammle() { int felder = 5; int counter = 0; int werte = 0; /* hier solltest du vllt darüber nachdenken das ganze etwas dynamischer zu gestalten z.B. int[] anzahl = new int[felder]; for(int i = 0; i < felder; i ++) {anzahl[i] = 0;} jetzt könntest du z.B. felder von der main ind laufUndSammle übergeben*/ int[] anzahl = new int [5]; anzahl[0] = 0; anzahl[1] = 0; anzahl[2] = 0; anzahl[3] = 0; anzahl[4] = 0; while(felder>0&&vornFrei()) { vor(); while(kornDa()) { nimm(); werte++; } anzahl[counter] = werte; werte = 0; counter++; felder--; } return anzahl; } int [] funktionZumSortieren(int[] anzahl) { bums code } // denk aber an das return in dieser funktion
bei einer int-funktion kann man den wert mit der variable einfach über return übergeben und in eine weitere variable speichern.. bsp: int zahl = funktionDieWasBerechnet(); geht sowas auch mit einer array übergabe?int[] array = laufeUndSammleEin();
wie oben bereits erwähnt.
Begründung für Java
in Java
Geschrieben
es hieß ja nicht java vs c++?
wenn man nach gründen dafür sucht würde ich es ma mit sicher(Kein direkter Zugriff auf Speicher) und robust(Fehlen von Zeigern, GC, Exceptions) versuchen