Nimbus にこれらの* Painters と一緒に何か月も渡された後、私は勝利を収めました。
使用されるキーはオペレーティング システム間で変更される可能性があることに注意してください (そのため、保証はありませんが、私の場合は機能します)。国境の有効な鍵を持っている限り、JTextArea
それを に転送できますJTextPane
。
import java.awt.Insets;
import javax.swing.*;
import javax.swing.UIManager.LookAndFeelInfo;
public class NimbusBorderPainting extends Box{
public NimbusBorderPainting(){
super(BoxLayout.Y_AXIS);
try {
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (UnsupportedLookAndFeelException e2) {
e2.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//Retrieve the TextArea painter from the defaults
Object o = UIManager.get("TextArea[Enabled+NotInScrollPane].borderPainter");
//Transfer the Painter to a TextPane key
UIDefaults paneDefaults = new UIDefaults();
paneDefaults.put("TextPane.borderPainter",o);
JTextPane pane = new JTextPane();
pane.setMargin(new Insets(10, 10, 10, 10));
//Apply the new UI to your text pane
pane.putClientProperty("Nimbus.Overrides",paneDefaults);
pane.putClientProperty("Nimbus.Overrides.InheritDefaults",false);
pane.setText("Lots of Text\nWell, as much as I'm willing to type\n");
add(pane);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(new NimbusBorderPainting());
frame.validate();
frame.pack();
frame.setVisible(true);
}
}