Devilmarkus Geschrieben 17. Dezember 2009 Geschrieben 17. Dezember 2009 Hallo, ich habe folgendes Problem: Ich möchte für mein Programm einen kleinen Desktop basteln, wo ein paar interne Applikationen zu finden sind. So weit, so gut, aber: wenn ich nun über ein Icon in einem Frame fahre, öffnet sich ein Tooltip (Maximieren, Minimieren, Schliessen und so weiter...) Beispiel: Das JInternalframe hier hat schon ToolTipText = null. Wie kann ich das nun auch für die einzelnen Icons machen? MfG Markus Zitieren
Dragon8 Geschrieben 17. Dezember 2009 Geschrieben 17. Dezember 2009 (bearbeitet) Direkte Methoden um das einzustellen habe ich jetzt nicht gefunden, wenn man sich aber mal den Quellcode des JInternalFrame anschaut, bzw geneuer die UI-Klasse vom InternalFrame sieht man, dass für die Titelzeile ne eigene Klasse benutzt wird, und in dieser wird der Text für den Tooltip der Buttons vom UIManager geholt, das heißt, du kannst die Tooltips des Buttons über den UIManager bestimmen. Die Keys sind: InternalFrame.closeButtonToolTipInternalFrame.iconButtonToolTipInternalFrame.restoreButtonToolTipInternalFrame.maxButtonToolTip Ich denke mal die Namen sind sprechend für welche Button welcher Key zuständig ist. Die Werte dafür verändern kannst du dann über die Klasse UIManager, zum Beispiel kannst du folgendermaßen den ToolTip des Schließen-Buttons auf nichts setzen: UIManager.put("InternalFrame.closeButtonToolTip", ""); Falls du das Nimbus Look&Feel per Hand setzt, solltest du diese Änderungen aber erst machen, sobald das Look&Feel gesetzt wurde. Da ich denke dass die Tooltips in dem Look&Feel direkt gesetzt werden, da zum Beispiel unter dem Metal Look&Feel keine Tooltips vorhanden sind. Bearbeitet 17. Dezember 2009 von Dragon8 Zitieren
Devilmarkus Geschrieben 17. Dezember 2009 Autor Geschrieben 17. Dezember 2009 Danke für den Versuch, aber der funktioniert leider auch nicht setLook(look); initComponents(); UIManager.put("InternalFrame.closeButtonToolTip", null); UIManager.put("InternalFrame.iconButtonToolTip", null); UIManager.put("InternalFrame.restoreButtonToolTip", null); UIManager.put("InternalFrame.maxButtonToolTip", null); (ob hierbei nun 'null' oder '""' ist kein Unterschied) Trotzdem: Ist auch egal, welchen Style ich verwende, man hat 4 zur Auswahl. Ich möchte kurz erklären, warum ich die Tooltips hier weghaben möchte: Ich filtere die Display Ausgabe bilinear und Tooltips oder auch sogar JComboBox'en verschrotten die bilineare Bildschirmausgabe, so dass ich nur noch 1FP/s erhalte und der Emulator nicht mehr zu bedienen ist. hier mal das Display mit allen möglichen Filtern und Effekten: Ich möchte eine möglichst realistische CRT Monitor Darstellung erreichen. Solange hier also keine JComboBox oder ein Tooltip reinhaut, habe ich das auch bei 50FP/s... Java geht manchmal seltsame Wege :old Zitieren
Dragon8 Geschrieben 17. Dezember 2009 Geschrieben 17. Dezember 2009 Versuch mal die Einstellungen zwischen dem Setzen des Look&Feels und dem Initalisieren der Komponenten zu setzen. Weil zum Beispiel bei folgendem Quelltext funktioniert das bei mir wunderbar: import javax.swing.*; public class TestInternalFrame extends JFrame{ public static void main(String[] args) { new TestInternalFrame().setVisible(true); } public TestInternalFrame() { super("Test"); this.setBounds(50, 50, 500, 600); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); try { UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); } catch (Exception e) { e.printStackTrace(); } UIManager.put("InternalFrame.closeButtonToolTip", ""); UIManager.put("InternalFrame.iconButtonToolTip", ""); UIManager.put("InternalFrame.restoreButtonToolTip", ""); UIManager.put("InternalFrame.maxButtonToolTip", ""); JDesktopPane desktop = new JDesktopPane(); JInternalFrame frame = new InternalFrame(); frame.setVisible(true); desktop.add(frame); this.setContentPane(desktop); } class InternalFrame extends JInternalFrame{ public InternalFrame() { super("Test Frame", true, true, true, true); add(new JButton("Neuer Button")); setLocation(30, 30); pack(); } } } Wenn ich jedoch den Block mit den ToolTip Einstellungen erst einfüge nachdem ich die DesktopPane mit dem InternalFrame eingerichtet und dem JFrame hinzugefügt habe, funktioniert es nicht. Wenn du also wirklich eine eigene Methode hast, die dass Look&Feel setzt, dann versuch die Einstellungen gleich darin vorzunehmen. Zitieren
Devilmarkus Geschrieben 17. Dezember 2009 Autor Geschrieben 17. Dezember 2009 Ich habe es nun hinbekommen: UIManager.put("InternalFrame.closeButtonToolTip", ""); UIManager.put("InternalFrame.iconButtonToolTip", ""); UIManager.put("InternalFrame.restoreButtonToolTip", ""); UIManager.put("InternalFrame.maxButtonToolTip", ""); setLook(look); initComponents(); Sorum geht es! Danke! Achja: public void setLook(int look){ try { if (look == 1) UIManager.setLookAndFeel( "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel" ); if (look == 2) UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); if (look == 3) UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); } catch(Exception e ) {e.printStackTrace();} } Zitieren
Devilmarkus Geschrieben 17. Dezember 2009 Autor Geschrieben 17. Dezember 2009 Wer es sich Antun möchte: Mal ein kleines Video der Einstellmöglichkeiten: Erstellt von Camtasia Studio 6 Die Uhr funktioniert noch nicht... Aber bald Zitieren
Devilmarkus Geschrieben 20. Dezember 2009 Autor Geschrieben 20. Dezember 2009 Seit ich nun weiss, wie diese lästigen Tooltips deaktiviert werden können, geht es nun GEWALTIG weiter in meinem Programm! Erstellt von Camtasia Studio 6 Hier kann man mal schon sehen wie der Desktop bald aussehen wird... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.