/ / Neue Benutzeroberfläche auf JInternalFrame-Titel anwenden - Java, Swing, Uimanager

Anwenden einer neuen Benutzeroberfläche auf den JInternalFrame-Titel - Java, Swing, Uimanager

Ich habe noch nie etwas mit Benutzeroberflächen gemacht und wurde beauftragt, unsere internen Rahmentitel zu ändern. Wir verwenden den Nimbus L & F und haben es in unserem Benutzeroberflächen-Manager versucht

UIManager.put("InternalFrameTitlePane.background", Color.RED);

nur um zu versuchen, etwas zu ändern. Das hat bei mir nicht geklappt und ich habe irgendwo einen anderen Beitrag über das Erstellen einer Benutzeroberfläche mit dem BasicInternalFrameTitlePane gefunden, also habe ich jetzt diesen Code:

public class CFrameTitleUI extends BasicInternalFrameTitlePane {

public CFrameTitleUI(JInternalFrame f)
{
super(f);
}

@Override
public void paintTitleBackground(Graphics g)
{
g.setColor(Color.RED);
g.fillRect(0, 0, getWidth(), getHeight());
}
}

Aber jetzt, da ich das habe, bin ich nicht sicher, was ich damit anfangen soll. Ich habe versucht, die Benutzeroberfläche im internen Frame mithilfe von "s" einzustellen setUI() Methode, aber das ist eine Titelleiste dafür, also bin ich sicher, dass das falsch ist. Ich versuchte es als nächstes

UIManager.put("InternalFrameTitlePane.background", CFrameTitleUI.getClass().getName());

und

UIManager.put("InternalFrameTitlePane", CFrameTitleUI.getClass().getName());

aber nichts. Muss ich es irgendwie wieder an den Nimbus L & F binden? Einige der Dinge, die wir einstellen, sagen "nimbusSelection" etc..

Die wichtigsten Fragen sind: erstelle ich eine benutzerdefinierte Benutzeroberfläche für die internen Rahmentitel und wie wende ich sie an? Danke.

Antworten:

0 für die Antwort № 1

Bekommst du das gleiche?

Bildbeschreibung hier eingeben

public class InternalFrameTest extends JFrame {

public InternalFrameTest() {

JDesktopPane desktop = new JDesktopPane();
JInternalFrame frame = new JInternalFrame("AHHHH!!!!", true);
frame.setSize(300, 300);
frame.setVisible(true);
frame.setOpaque(false);
desktop.add(frame);
setContentPane(desktop);
setSize(600, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

public static void main(String[] args) {
try {
UIManager.setLookAndFeel(NimbusLookAndFeel.class.getName());
} catch (ClassNotFoundException|InstantiationException
|IllegalAccessException|UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
UIManager.put("InternalFrame:InternalFrameTitlePane[Enabled].textForeground", Color.RED);
new InternalFrameTest();
}
}

Wenn ich renne (ohne etwas einzustellen)

System.out.println(UIManager.getColor("InternalFrame:InternalFrameTitlePane[Enabled].textForeground"));

Ich bekomme

"DerivedColor(color=142,143,145 parent=nimbusDisabledText offsets=0.0,0.0,0.0,0 pColor=142,143,145"

Bekommst du das gleiche?