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 № 1Bekommst du das gleiche?
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?