Zum Inhalt springen

madbat

Mitglieder
  • Gesamte Inhalte

    26
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von madbat

  1. joah hab ich schon, kann allgemein auf keien classen zugreifen bis auf die zwei die schon existieren... kann man irgendwie eine sicherung machen, das man nicht auf nicht eingetragene klassen zugreifen kann? vielleicht muss ich da nochwas nachtragen, weil in die standard sachen isse komplet eingetragen
  2. an der Meldung nichts, nur warum sie aufblöbt, da ich ja auf eine class und kein package verwiesen hab
  3. Die Klasse gibt es: package de.xyz.proto; import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; public class Customers { public Customers(){ } public String getOptions() throws IOException{ String out = new String(); File customersFile = new File("/customers.cust"); FileInputStream fis = new FileInputStream(customersFile); BufferedInputStream bis = new BufferedInputStream(fis); DataInputStream dis = new DataInputStream(bis); Properties props = new Properties(); props.load(dis); dis.close(); bis.close(); fis.close(); int size = Integer.parseInt(props.getProperty("size")); int last = 0; for (int i = 0; i < size; i++) { last++; out = out + ("\n<Option Value=\"" + i + "\">" + props.getProperty("name" + i) + "</Option>"); } out = out +("\n<Option Value=\"" + (last++) + "\">Leerer Datensatz...</Option>"); out = out +("\n<Option Value=\"" + (last++) + "\">Aktuellen Datensatz speichern...</Option>"); out = out +("\n<Option Value=\"" + (last++) + "\">Aktuellen Datensatz loeschen.../Option>"); return out; } } [/PHP]
  4. Mojn Mojn, ich hab da mal wieder ein Problem mit dem bösen EE, ich muss einfach nur auf eine java classe zugreifen, standardmäßig habe ich so angefangen: <select name="savedCustomers" Size="1" type="submit"> <%@ page import="de.xyz.proto.Customers" %> <% Customers cs = new Customers(); %> <%= cs.getOptions(); %> </select> [/PHP] Aber egal wie ich es drehe oder wende ich komme einfach nicht dran, er sage mir immer: [PHP]org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 6 in the generated java file Only a type can be imported. de.tcom.proto.Customers resolves to a package An error occurred at line: 51 in the jsp file: /result.jsp Customers cannot be resolved to a type 48: 49: <%@ page import="de.xyz.proto.Customers" %> 50: <% 51: Customers cs = new Customers(); 52: %> 53: </select></td> 54: </tr> An error occurred at line: 51 in the jsp file: /result.jsp Customers cannot be resolved to a type 48: 49: <%@ page import="de.xyz.proto.Customers" %> 50: <% 51: Customers cs = new Customers(); 52: %> 53: </select></td> 54: </tr> Stacktrace: org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439) org.apache.jasper.compiler.Compiler.compile(Compiler.java:334) org.apache.jasper.compiler.Compiler.compile(Compiler.java:312) org.apache.jasper.compiler.Compiler.compile(Compiler.java:299) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:589) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) Langsam krieg ich die Kriese, das irgendwie nie sowas klappt wie es vorher schon mal geklappt hat... Grüße, madbat
  5. madbat

    Servlet verfügbar machen

    Okay hab mir ne kleine Test.jsp geschrieben die nichts anderes macht als auf mein Servlet zuzugreifen, jetzt bekomme ich einen http 500 Error, ClassNotFound Danke für den Link, werd mich mal durchackern, müsste ich die Einstellungen dann für jeden Container typ ändern, da der Kunde leider nicht weiss wodrauf es nachher laufen soll.
  6. madbat

    Servlet verfügbar machen

    Ich kann es nichtmals über http aufrufen, genau wie die beiden anderen Klassen auch nicht, aber an die anderen kann ich mit dem oben genannten Befhel ohne Probleme Daten übermitteln verarbeitung und zurückschicken lassen... instantiier wird meiner Meinung nach alles Richtig... Container ist Tomcat, aber ich habe leider keine Ahnung wie ich das überprüfe
  7. madbat

    Servlet verfügbar machen

    <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name> Reseller_Client</display-name> <servlet> <description> </description> <display-name> Reseller_Servlet</display-name> <servlet-name>Reseller_Servlet</servlet-name> <servlet-class> de.blah.bbb.test.Reseller_Servlet</servlet-class> </servlet> <servlet> <description> </description> <display-name> Result_Servlet</display-name> <servlet-name>Result_Servlet</servlet-name> <servlet-class> de.blah.bbb.test.Result_Servlet</servlet-class> </servlet> <servlet> <description> </description> <display-name> Customer_Servlet</display-name> <servlet-name>Customer_Servlet</servlet-name> <servlet-class> de.blah.bbb.test.Customer_Servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Reseller_Servlet</servlet-name> <url-pattern>/Reseller_Servlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Result_Servlet</servlet-name> <url-pattern>/Result_Servlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Customer_Servlet</servlet-name> <url-pattern>/Customer_Servlet</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app>[/PHP] Reseller_Servlet und Result_Servlet sind auch erreichbar nur Customer_Servlet net...
  8. Hey ich hab mal wieder ein Problem, ich habe eine Projekt von jemand übernommen, und musste dieses jetzt um ein Servlet erweitern, ich habe sie brav in der web.xml verfügbar gemacht, und sie im gleichen package liegen wie die anderen servlets auch, nur wenn ich auf sie zugreifen will, mit <form action="<%=request.getContextPath()%>/My_Servlet"> und ihr daten übermitteln von einer Inputfrom bekomme ich andauernd einen 404 das sie nicht gefunden werden kann. Habe ich was vergessen, fällt spontan jemandem ein warum sie evtl nicht gefunden werden kann? Grüße madbat
  9. Morgen, cool ich danke dir ganz vielmals, ich habe nach wie vor weiter versucht die tags irgendwie einzubauen, aber es hat nicht wirklich geklappt, wenn ich mir deine quells angucke, dann habe ich eindeutig zu wenige unterschiedliche Quellen überschrieben, außerdem habe ich es nicht wirklich hinbekommen mir mit BlockView eine vernünftige Ansicht zu erstellen. Vielen lieben Dank, madbat
  10. So ich hab mal ein bisschen im Netz gesucht und hab es tatsächlich geschafft einen neuen Tag hinzuzufügen: Fieldset Layout: /* * Fieldset.java * * Created on 09.03.2010, 11:36:34 */ package entwicklung; /** * * @author madbat */ public class Fieldset extends javax.swing.JPanel { /** Creates new form Fieldset */ public Fieldset(String content) { this(content, ""); } public Fieldset(String content, String headLine) { initComponents(); this.content.setText(content); this.headline.setText(headLine); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { headline = new javax.swing.JLabel(); jPanel1 = new javax.swing.JPanel(); content = new javax.swing.JLabel(); org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(entwicklung.EntwicklungApp.class).getContext().getResourceMap(Fieldset.class); setBackground(resourceMap.getColor("Form.background")); // NOI18N setName("Form"); // NOI18N setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); headline.setBackground(resourceMap.getColor("headline.background")); // NOI18N headline.setText(resourceMap.getString("headline.text")); // NOI18N headline.setFocusable(false); headline.setName("headline"); // NOI18N headline.setOpaque(true); add(headline, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 0, -1, -1)); jPanel1.setBackground(resourceMap.getColor("jPanel1.background")); // NOI18N jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); jPanel1.setName("jPanel1"); // NOI18N content.setText(resourceMap.getString("content.text")); // NOI18N content.setName("content"); // NOI18N javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(content) .addContainerGap(324, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(content) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 7, 370, 30)); }// </editor-fold> // Variables declaration - do not modify private javax.swing.JLabel content; private javax.swing.JLabel headline; private javax.swing.JPanel jPanel1; // End of variables declaration } [/PHP] HTML-Tag-Erweiterung: [PHP]public class ownHTML extends HTML { public static class ownHTMLTag extends Tag{ protected ownHTMLTag(String id){ super(id); } protected ownHTMLTag(String id,boolean causesbreak,boolean isblock){ super(id,causesbreak,isblock); } public static final Tag fieldset=new UnknownTag("fieldset"); } } HTML-EditorKit mit neuem Tag enthalten: public class MyEditorKit extends HTMLEditorKit { @Override public ViewFactory getViewFactory() { return new OwnHTMLFactory(); } public static class OwnHTMLFactory extends HTMLEditorKit.HTMLFactory implements ViewFactory{ @Override public View create(Element ele){ Object attr = ele.getAttributes().getAttribute(StyleConstants.NameAttribute); if (attr instanceof ownHTML.ownHTMLTag | attr instanceof HTML.Tag){ //Start processing for the custom tag if(ele.getName().equals("fieldset")){ return new ComponentView(ele){ @Override protected Component createComponent(){ String content = "content\nline1\nline2"; String headline = "headline"; Fieldset field = new Fieldset(content, headline); return field; } }; }else { return super.create(ele); } }else{ return null; } } }[/PHP] Eigene Browser Komponente: [PHP]public class OwnBrowserPane extends JEditorPane { EditorKit kit = new MyEditorKit(); public OwnBrowserPane() { this.setEditorKit(kit); } } rufe ich jetzt @Action public void ddd() { String text="<fieldset>test</fieldset>"; ownBrowserPane.setText(text); }[/PHP] auf erhalte ich den Output folgendermaßen: [PHP]test<fieldset><legend>headline</legend>content</fieldset> Wenn mir einer sagen kann, wie ich es schaffe den Text zwischen den Tags zu erhalten wäre mein Problem gelöst (:
  11. genauso meine ich das, nur muss ich jetzt noch was für den legend Befehl haben, also die Überschrift, aber ich denke mal das sollte auch möglich sein. Kenne mich mit html tags leider nicht mehr so gut aus wie früher, da ich sie schon lange nicht mehr intensiv gebraucht habe. so wie du geraten hast klappt es leider auch nicht, der HTMLParser ist echt bescheiden, naja habe jetzt einfach mal <p style=\"border-width:thin; border-style:solid; \">content</p> genommen, dass funktioniert, nur muss ich jetzt noch den <legend> befehl emulieren, sprich die Überschrift, jemand ne Idee? Grüße, madbat
  12. Morgen, kennt von euch jemand eine Möglichkeit im JEditorPane übergansweise, bis Swing es unterstützt, den fieldsetTag einzubinden... fertige freie Lösungen, und/oder codeSchnipsel, und denkanstöße willkommen. Mein Freund google liefert zwar einen Treffer mit dem HTMLKit, aus den sun Foren, nur leider funktioniert, trotz dem Workarround zur Fehlerbehebung der Code bei mir nicht. Meine erste Idee war es einfach zu gucken, ob im Text ein <fieldset> vorkommt, "<fieldset>Textblahblah</fieldset>" das zu löschen, eine paint methode aufzurufen die an die betreffende Stelle ein Rectangle zeichnet und darinnen den Text. Probleme bei der Methode wären: a) Geschwindigkeit Text wird durchsucht (ich denke zum zweiten mal, da um die Standard Tags zu erstellen der text auch schon druchsucht worden ist) Positionierung b.1) die genaue Position des Rectangles herauszubekommen, da sie abhängig is von Breite, Buchstabengröße etc. b.2) die Größe des Rectangles müsste sich je nach Textinhalt richten, mit den Oben genannten Formationsproblemem c) Formatierung es müsste für sämtliche borderstyles und ähnliches eine neue Methode geschrieben werden... Vielleicht fällt von euch jemandem eine andere Möglichkeit ein, ich würde sogar pfuschen und das fieldset mit anderen html-tags darstellen wenn möglich... Grüße madbat
  13. Ich hab da sganze mit den Events und Listenern immer noch nicht ganz verstanden, irgendwie ist mir das ganze System fremd, auch nach mehrmaligen Lesen der javaInsel bin ich noch nicht dahinter gestiegen warum es denn jetzt zwar im Test so funktioniert wie es soll, aber im richtigen System nicht... Falls jemand also nen gutes Tut zu den Anfängen von eigenen Eventhandlern hat, dann immer her damit... Also ich wollte meine Events nicht ganz so abstrakt einbauen, weil ich leider nicht ganz verstanden habe welche Klasse bei dir für was genau zuständig ist, hier mal meine implementiern: public class ListenSetOutput { ContentPanel parent; public ListenSetOutput(ContentPanel parent){ this.parent = parent; } public void echo(String txt){ parent.echo(parent.getTxt() + txt); } public void cls(){ parent.cls(); } } [/PHP] [PHP] //Aus der MainGui Klasse, hab einfach mal auf nen menuItem die action setText druffgeknallt //MainGui ruft sämtliche Klassen auf, die etwas mit der GUI zu tun haben, und wird selber nur von //der Main Non-Gui Klass aufgerufen, die nachher noch die ganzen Methoden etc aufruft... [...] public ListenSetOutput listenSetText = new ListenSetOutput(contentPanel); @Action public void setText() { listenSetText.echo("test Event"); } [...] public class ContentPanel extends javax.swing.JPanel { public ContentPanel() { initComponents(); } public void echo(String txt){ txtOutput.setText(txtOutput.getText()+txt); //jScrollPane1.getVerticalScrollBar().setValue(jScrollPane1.getVerticalScrollBar().getMaximum()); } public void cls(){ txtOutput.setText(""); } public String getTxt(){ return txtOutput.getText(); } @SuppressWarnings("unchecked") private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); txtOutput = new javax.swing.JEditorPane(); setName("Form"); jScrollPane1.setName("jScrollPane1"); org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(ibm2.IBM2App.class).getContext().getResourceMap(ContentPanel.class); txtOutput.setContentType(resourceMap.getString("txtOutput.contentType")); txtOutput.setText(resourceMap.getString("txtOutput.text")); txtOutput.setComponentPopupMenu(new ibm2.GUI.popupMenu.CopyPaste(txtOutput) ); txtOutput.setName("txtOutput"); jScrollPane1.setViewportView(txtOutput); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 544, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 458, Short.MAX_VALUE) ); } private javax.swing.JScrollPane jScrollPane1; private static javax.swing.JEditorPane txtOutput; }[/PHP]
  14. soo ich habe mir da jetzt mal was zusammengedichtet, die frage ist, habe ich jetzt alle aufgaben richtig verteilt, wobei die system out methode hierbei jetzt für das füllen vom textfeld verantwortlich ist, also es klappt alles, ich weiss nur nicht ob alles an der richtigen stelle steht... package de.test; public interface ListenKlass { public void printInt(EventKlass evt); } package de.test; public class EventKlass { int wert; public EventKlass(int i){ this.wert = i; } } package de.test; public class Ebene1Class1 { ListenKlass lk; int wert; public Ebene1Class1(ListenKlass lk, int i) { this.lk = lk; this.wert = i; } public void printOut(){ lk.printInt(new EventKlass(wert)); } } public class MainClass { /** * @param args */ public static void main(String[] args) { ListenKlass LK = new ListenKlass(){ @Override public void printInt(EventKlass evt) { System.out.println(evt.wert+""); } }; Ebene1Class1 eins = new Ebene1Class1(LK, 14); eins.printOut(); System.out.println("\n"); Ebene1Class1 zwei = new Ebene1Class1(LK, 12); zwei.printOut(); } }[/PHP]
  15. ich kann dir nicht ganz folgen, ich weiss wie ich eventlistener dazu bringe mir nen popup zu zeigen, oder auf buttons etc zu reagieren, aber wie bringe ich sie dazu über klassen hinweg miteinander zu kommunizieren, reicht es qwenn ich einfach zu der contentpane einen action(?)Listener adde und dann in meiner nonGUI class ein new actionEvent(textZumSchreiben evt) erstelle?
  16. Hallo, ich sitze mal wieder vor einem Problem, ich habe in meinem Programm mal eine strikte Trennung zwischen non-Gui und Gui elementen vorgenommen, die Strucktur sieht jetzt in etwa so aus: ProjectName MainNonGui.java(enthällt public static main) MainGui.java ProjectName.GUI ProjectName.GUI.contentPane ContentPane.java(Ich enthalte eine JTextArea) ... ProjectName.GUI.Irgendwas anderes Pane ... ProjectName.NonGui ProjectName.NonGui.Methoden IchSollwasIndieJTextAreaVonContentPaneSchreiben.java ... ... so jetzt ist das alles non-static aufeiander aufgebaut, sodass ich die klassen zum output nicht direkt anwählen kann, deshalb speichere ich sie momentan ebend jeweils in dem parentFile als public ein, und wenn ich was ansprechen will muss ich immer über die main class gehen davon eine verlinkung zur GUI Klasse haben und davon eine Verlinkung auf das GUI element was ich ansprechen will, das ist aber teilweise bis zu 4 Ebenen drunter und irgendwie werden mir die 'Links' zu lang. Die andere Idee war eine Klasse Variablen zu erstellen, die alles static abspeichert, sodass ich nachher nur auf MainNonGUI.variablen.contentpane.setText("Sooo"); zugreifen müsste, das kam mir aber irgendwie auch nicht so sonderlich schön vor. Gibt es nicht irgendwie eine andere Methode das zu realisieren, wie löst man sowas denn als "Profi"? Grüße madbat
  17. Jaaah genau daran liegt es... ich dachte die ganze Zeit ich weise dem einfach nur ein neues Layout zu, weil ich es nicht gewöhnt bin, dass irgendwo im Interface nur ein .add befehl steht, das ist eindeutig zu wenig, als das meine Augen das wahrnehmen könnten, habs einfach überlesen... Ich danke dir ^__^ ne grouplayout ist standardmäßig bei swing mit dabei: GroupLayout (Java Platform SE 6)
  18. Hey, ich hab da mal wieder ein Problemchen, ich habe in meinem Projekt aufgeräumt, und bin dabei auf die Idee gekommen, dass man ja bei 20 unterschiedlichen Panels, diese gut als eigene class in einem eigenen File erstellen und ein "extends JPanel" hinten dran zu pappen, wegen der Ordnung und so. Jetzt ist es nur so, das wenn ich im MainProjekt ein Panel einfüge, dass er dann das Panel leer anzeigt, obwohl im aufgerufenen Panel ja eigentlich Daten drinnen stehen sollten, hier mal mein Code(alles mit netbeans zusammengeklickt) : public class TestView extends FrameView { private javax.swing.JPanel mainPanel; public TestView(SingleFrameApplication app) { super(app); initComponents(); } [...] private void initComponents() { mainPanel = new panelOS(); mainPanel.setName("mainPanel"); // NOI18N javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel); mainPanel.setLayout(mainPanelLayout); mainPanelLayout.setHorizontalGroup( mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 400, Short.MAX_VALUE) ); mainPanelLayout.setVerticalGroup( mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 252, Short.MAX_VALUE) ); [...] setComponent(mainPanel); [...] } }[/PHP] Einfach nur ein mit netbeans standard Panel + irgendwas reingeklickt um zu gucken ob er des richtige anzeigt: [PHP]/* * To change this template, choose Tools | Templates * and open the template in the editor. */ /* * panelOS.java * * Created on 24.02.2010, 11:23:22 */ package testapp; /** * * @author jschmi48 */ public class panelOS extends javax.swing.JPanel { /** Creates new form panelOS */ public panelOS() { initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jTextField1 = new javax.swing.JTextField(); jRadioButton1 = new javax.swing.JRadioButton(); jToggleButton1 = new javax.swing.JToggleButton(); setName("Form"); // NOI18N org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(testapp.TestApp.class).getContext().getResourceMap(panelOS.class); jTextField1.setText(resourceMap.getString("jTextField1.text")); // NOI18N jTextField1.setName("jTextField1"); // NOI18N jRadioButton1.setText(resourceMap.getString("jRadioButton1.text")); // NOI18N jRadioButton1.setName("jRadioButton1"); // NOI18N jToggleButton1.setText(resourceMap.getString("jToggleButton1.text")); // NOI18N jToggleButton1.setName("jToggleButton1"); // NOI18N javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(68, 68, 68) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jToggleButton1) .addComponent(jRadioButton1)) .addContainerGap(227, Short.MAX_VALUE)) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(0, 170, Short.MAX_VALUE) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 171, Short.MAX_VALUE))) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(116, 116, 116) .addComponent(jRadioButton1) .addGap(44, 44, 44) .addComponent(jToggleButton1) .addContainerGap(94, Short.MAX_VALUE)) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(0, 140, Short.MAX_VALUE) .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 140, Short.MAX_VALUE))) ); }// </editor-fold> // Variables declaration - do not modify private javax.swing.JRadioButton jRadioButton1; private javax.swing.JTextField jTextField1; private javax.swing.JToggleButton jToggleButton1; // End of variables declaration }
  19. Hallo, für den Namen und das Passwort brauchst du meines Wissens den sun.misc.BASE64Encoder, damit musst du den String benutzernamen +":"+passwort encoden und davor dann ein "Basic: " puzzeln dann in der URLConnection noch vor dem .connect(), .setDoInput auf true setzten und .setRequestProperty("Authorization", obenRausgekommenesPW); angeben. Hab das glaub ich von der JavaInsel. Grüße, madbat Edit: hab das ganze aber noch nicht mit Seiten versucht die Zertifikate brauchen, sondern immer nur einen Namen und ein Passwort haben wollten...
  20. Tja manchmal hilft wohl einfach etwas Abstand nehmen und was anderes machen und dann wieder einsteigen... dann einmal neu bauen und tadaa, es klappt, hier meine Lösung für interessierte: private void showNode(javax.swing.event.TreeExpansionEvent evt) { try { DefaultMutableTreeNode selected = (DefaultMutableTreeNode) evt.getPath().getLastPathComponent(); Verzeichniss subKat = new Verzeichniss(evtPathToURL(selected)); //Füge an angeklickte Node den dazugehörigen // Verzeichnisbaum bis Tiefe 1 an getDirTree02(selected, subKat, 1); //Öffne Verzeichniss und scrolle zu erstem Unterverzeichniss DefaultMutableTreeNode newNode = (DefaultMutableTreeNode) selected.getChildAt(0); dirTree.scrollPathToVisible(new TreePath(newNode.getPath())); dirTree.repaint(); } catch (MalformedURLException ex) { Logger.getLogger(openOnlineDialog02.class.getName()).log(Level.SEVERE, null, ex); } } public static void getDirTree02(DefaultMutableTreeNode parent, Verzeichniss actKat, int tiefe) throws MalformedURLException { //Abfrage ob Node schon ein Verzeichnisbaum zugeordnet wurde boolean isAlreadyLoaded = false; if (parent.getChildCount() > 0){ if (parent.getChildAt(0).getChildCount() > 0){ isAlreadyLoaded = true; } } if ((tiefe > -1)&&(!(isAlreadyLoaded))) { for (int i = 0; i < actKat.subCategories().length; i++) { Verzeichniss subKat = new Verzeichniss(actKat.subCategories()[i]); //Gucke ob Node schon existiert: if (parent.getChildCount() > i) { if (subKat.getName().equalsIgnoreCase(parent.getChildAt(i).toString())) { //Wenn der Name schon vorhanden, dann erstelle keine neue Node, sondern arbeite //mit der alten weiter getDirTree02((DefaultMutableTreeNode) parent.getChildAt(i), subKat, tiefe - 1); continue; } } //Erstelle eine neue Noe wenn Name noch nicht vorhanden DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(subKat.getName()); getDirTree02((DefaultMutableTreeNode) newNode, subKat, tiefe - 1); parent.add(newNode); } } } private DefaultTreeModel initTree() { try { URL serverurl = Var.getServer(); Verzeichniss actKat = new Verzeichniss(serverurl); //Richte rootVerzeichniss ein. DefaultMutableTreeNode root = new DefaultMutableTreeNode(serverurl.toString()); getDirTree02(root, actKat, 1); treeModel = new DefaultTreeModel(root); return treeModel; } catch (MalformedURLException ex) { System.err.println(ex.getMessage()); } return null; } [...] JTree dirTree = new JTree((TreeModel) initTree()); dirTree.addTreeExpansionListener(new javax.swing.event.TreeExpansionListener() { public void treeExpanded(javax.swing.event.TreeExpansionEvent evt) { showNode(evt); } }); [...] [/PHP] Weniger Comments als beim letzten Mal ich hoffe trotzdem verständlich, ansonsten einfach melden ^__^ Der letzte Teil muss dann dort rein wie die Komponenten initalisiert werden. Verbesserungsvorschläge werden gerne noch angenommen, grüße madbat
  21. Guten Morgen, Ich hab da mal wieder ein Problem ^__^ also, folgendes, ich habe einen https Server, von dem ich mir eine FileList hohle, alles ziemlich umständlich da ich dafür die index.html auslesen muss, die ganze Verzeichniss strucktur stelle ich in einem DefaultMutableTreeNode dar : root. Jetzt ist der Server aber ziemlich groß, sodass ich nur bis zu einer Tiefe von einem Verzeichniss einlese, damit der Baum nicht erst nach 10 Minuten angezeigt wird, da der Einlesevorgang doch etwas dauert. Ich setzte also einen Eventlistender TreeExpansionEvent, der mir bei Expansion einer Node root aktualisieren soll, das macht der auch(lasse mir root in die console ausgeben, da stimmt alles) das Problem ist jetzt nur, dass er mir das im JTree nicht anzeigt, hier mal mein Code zum aktualisieren: (sogar alles brav kommentiert ausnahmsweise mal xD^^) private void showNode(javax.swing.event.TreeExpansionEvent evt) { DefaultMutableTreeNode selected = (DefaultMutableTreeNode) evt.getPath().getLastPathComponent(); try { //Lege neues Verzeichniss von der geöffneten Node an Verzeichniss Vz = new Verzeichniss(evtPathToURL(selected)); //Sollte das Verzeichniss Unterverzeichnisse haben... if (Vz.subCategories().length > 0) { //füge die Unterverzeichnisse an selected an getDirTree(selected, Vz, 1); //setzte root Verzeichniss auf neues rootVerzeichniss //root = (DefaultMutableTreeNode) selected.getRoot(); //root in die Konsole printTree(root); //übergib den JTree den neuen DefaultMutableTreeNode //und versuche diesen zu zeichnen dirTree = new JTree(root); dirTree.validate(); dirTree.repaint(); this.repaint(); } } catch (MalformedURLException ex) { Logger.getLogger(openOnlineDialog.class.getName()).log(Level.SEVERE, null, ex); } } private void printTree(DefaultMutableTreeNode start) { for (int i = 0; i < start.getChildCount(); i++) { printTree((DefaultMutableTreeNode) start.getChildAt(i)); } String tmp = ""; for (int i = 0; i < start.getPath().length; i++) { tmp = tmp + start.getPath()[i]; } System.out.println(tmp); } public static void getDirTree(DefaultMutableTreeNode parent, Verzeichniss actKat, int tiefe) throws MalformedURLException { //forEach Unterverzeichniss von aktueller Kategorie for (int i = 0; i < actKat.subCategories().length; i++) { //Erstelle neues subKategorie Verzeichniss subKat = new Verzeichniss(actKat.subCategories()[i]); String name = subKat.getName(); //Erstelle neuen Node mit Namen der Subkategorie DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(name); //...und füge sie der parentNode hinzu parent.add(newNode); //Wenn das Verzeichniss weitere unterVerzeichnisse hat wiederhohle die den Prozess //bis Tiefe 0 ist, und füge if (subKat.subCategories().length > 0) { if (tiefe > 0) { getDirTree(newNode, subKat, tiefe - 1); } } } } Schon mal vielen Dank für eure Hilfe, madBat
  22. madbat

    FensterChaos

    Backspace? ist das eine eingebaute Funktion im jdk? ich hätte bestimmt einen übersehen bei meinem Glück, außerdem hätte ich die class namen ändern müssen, wäre aber garantiert der nächste Schritt gewesen, wenn ich nicht rein zufällig doch noch etwas von Google verstanden hätte. Grüße madbat
  23. madbat

    FensterChaos

    Ich gelobe Besserung beim nächsten Mal, ich wollte ja auch gerne den Quelltext mit reingeben, nur stehen da momentan noch die ganzen Zugriffsdaten für die Server drinnen und mein Chef wär bestimmt ziemlich sauer geworden wenn ich die mit gepostet hätte ^__^
  24. madbat

    FensterChaos

    -pls delete me-
  25. madbat

    FensterChaos

    Da bin ich wieder, also das Problem liegt an einer Änderung der ClassenAbfrage bei der Umstellung vom Appframework 1.02 auf das 1.03, hier wird jetzt ein Fehler ausgegeben sollte eine Klasse noch nicht deffiniert sein bevor man sie aufruft... Lösung: Man deklariere View view; und erst unter void startup() view = new view(this); Falls noch jemand dieses Probleme haben sollte, und aus meinem kryptischen Text nicht schlau wird, kann ich es gerne auch noch mal genauer beschreiben. Grüße madbat Edit: Ja das mag sein, nur bin ich daraus nicht schlau geworden, weil ja alle Klassen existierten, das Problem war nur, das ich sie aufrufen wollte, als sie noch nicht vollständig geladen waren(was wie gesagt unter dem Appframework 1.02 auch noch ohne Probleme ging)

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