Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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:

tooltip.png

Das JInternalframe hier hat schon ToolTipText = null.

Wie kann ich das nun auch für die einzelnen Icons machen?

MfG

Markus

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.closeButtonToolTip
  • InternalFrame.iconButtonToolTip
  • InternalFrame.restoreButtonToolTip
  • InternalFrame.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 von Dragon8

  • Autor

Danke für den Versuch,

aber der funktioniert leider auch nicht :rolleyes:

        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:

tooltip2.png

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:

monitor.png

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

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.

  • Autor

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();}

    }

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.