下面列出了怎么用javax.swing.plaf.basic.BasicSplitPaneUI的API类实例代码及写法,或者点击链接到github查看源代码。
private MainPanel() {
super(new GridLayout(2, 1));
JSplitPane splitPane = new JSplitPane();
Container divider = ((BasicSplitPaneUI) splitPane.getUI()).getDivider();
divider.addMouseListener(new MouseAdapter() {
@Override public void mousePressed(MouseEvent e) {
super.mousePressed(e);
splitPane.requestFocusInWindow();
// or
// Action startResize = splitPane.getActionMap().get("startResize");
// startResize.actionPerformed(new ActionEvent(splitPane, ActionEvent.ACTION_PERFORMED, "startResize"));
}
});
add(makeTitledPanel("Default", new JSplitPane()));
add(makeTitledPanel("Divider.addMouseListener", splitPane));
setPreferredSize(new Dimension(320, 240));
}
DiffSplitPaneDivider(BasicSplitPaneUI splitPaneUI, EditableDiffView master) {
super(splitPaneUI);
this.master = master;
fontColor = new JLabel().getForeground();
actionIconsHeight = insertAllImage.getHeight(this);
actionIconsWidth = insertAllImage.getWidth(this);
setBorder(null);
setLayout(new BorderLayout());
mydivider = new DiffSplitDivider();
add(mydivider);
addMouseListener(this);
addMouseMotionListener(this);
}
/**
* Constructs a new SplitPane containing the two components given as arguments
*
* @param orientation - the orientation (HORIZONTAL_SPLIT or VERTICAL_SPLIT)
* @param first - the left component (if horizontal) or top component (if
* vertical)
* @param second - the right component (if horizontal) or bottom component (if
* vertical)
* @param initialDividerLocation - the initial divider location (in pixels)
*/
public static JSplitPane splitpane(int orientation, Component first, Component second, int initialDividerLocation) {
JSplitPane x = make(new JSplitPane(orientation, first, second), new EmptyBorder(0, 0, 0, 0));
x.setContinuousLayout(true);
x.setDividerLocation(initialDividerLocation);
x.setOneTouchExpandable(false);
x.setResizeWeight(0.5);
if (Util.onMac() && (x.getUI() instanceof BasicSplitPaneUI)) {
boolean h = (orientation != JSplitPane.HORIZONTAL_SPLIT);
((BasicSplitPaneUI) (x.getUI())).getDivider().setBorder(new OurBorder(h, h, h, h)); // Makes
// the
// border
// look
// nicer
// on
// Mac
// OS
// X
}
return x;
}
protected JComponent createComponent() {
final JComponent comp = super.createComponent();
if (toolbar == null) init();
JExtendedSplitPane contentSplit = new JExtendedSplitPane(JExtendedSplitPane.VERTICAL_SPLIT, true, comp, pluginsComponent) {
public boolean requestFocusInWindow() {
return comp.requestFocusInWindow();
}
};
BasicSplitPaneDivider contentDivider = ((BasicSplitPaneUI)contentSplit.getUI()).getDivider();
contentDivider.setBorder(BorderFactory.createMatteBorder(1, 0, 0, 0, SEPARATOR_COLOR));
contentDivider.setDividerSize(5);
contentSplit.setBorder(BorderFactory.createEmptyBorder());
contentSplit.setResizeWeight(0.7d);
return contentSplit;
}
/**
* Creates a new Motif SplitPaneDivider
*/
public MotifSplitPaneDivider(BasicSplitPaneUI ui) {
super(ui);
highlightColor = UIManager.getColor("SplitPane.highlight");
shadowColor = UIManager.getColor("SplitPane.shadow");
focusedColor = UIManager.getColor("SplitPane.activeThumb");
setDividerSize(hThumbWidth + pad);
}
/**
* Creates a new Motif SplitPaneDivider
*/
public MotifSplitPaneDivider(BasicSplitPaneUI ui) {
super(ui);
highlightColor = UIManager.getColor("SplitPane.highlight");
shadowColor = UIManager.getColor("SplitPane.shadow");
focusedColor = UIManager.getColor("SplitPane.activeThumb");
setDividerSize(hThumbWidth + pad);
}
/**
* Sets the SplitPaneUI that is using the receiver. This is completely
* overriden from super to create a different MouseHandler.
*/
public void setBasicSplitPaneUI(BasicSplitPaneUI newUI) {
if (splitPane != null) {
splitPane.removePropertyChangeListener(this);
if (mouseHandler != null) {
splitPane.removeMouseListener(mouseHandler);
splitPane.removeMouseMotionListener(mouseHandler);
removeMouseListener(mouseHandler);
removeMouseMotionListener(mouseHandler);
mouseHandler = null;
}
}
splitPaneUI = newUI;
if (newUI != null) {
splitPane = newUI.getSplitPane();
if (splitPane != null) {
if (mouseHandler == null) mouseHandler=new MotifMouseHandler();
splitPane.addMouseListener(mouseHandler);
splitPane.addMouseMotionListener(mouseHandler);
addMouseListener(mouseHandler);
addMouseMotionListener(mouseHandler);
splitPane.addPropertyChangeListener(this);
if (splitPane.isOneTouchExpandable()) {
oneTouchExpandableChanged();
}
}
}
else {
splitPane = null;
}
}
/**
* Creates a new Motif SplitPaneDivider
*/
public MotifSplitPaneDivider(BasicSplitPaneUI ui) {
super(ui);
highlightColor = UIManager.getColor("SplitPane.highlight");
shadowColor = UIManager.getColor("SplitPane.shadow");
focusedColor = UIManager.getColor("SplitPane.activeThumb");
setDividerSize(hThumbWidth + pad);
}
/**
* Sets the SplitPaneUI that is using the receiver. This is completely
* overriden from super to create a different MouseHandler.
*/
public void setBasicSplitPaneUI(BasicSplitPaneUI newUI) {
if (splitPane != null) {
splitPane.removePropertyChangeListener(this);
if (mouseHandler != null) {
splitPane.removeMouseListener(mouseHandler);
splitPane.removeMouseMotionListener(mouseHandler);
removeMouseListener(mouseHandler);
removeMouseMotionListener(mouseHandler);
mouseHandler = null;
}
}
splitPaneUI = newUI;
if (newUI != null) {
splitPane = newUI.getSplitPane();
if (splitPane != null) {
if (mouseHandler == null) mouseHandler=new MotifMouseHandler();
splitPane.addMouseListener(mouseHandler);
splitPane.addMouseMotionListener(mouseHandler);
addMouseListener(mouseHandler);
addMouseMotionListener(mouseHandler);
splitPane.addPropertyChangeListener(this);
if (splitPane.isOneTouchExpandable()) {
oneTouchExpandableChanged();
}
}
}
else {
splitPane = null;
}
}
/**
* Creates a new Motif SplitPaneDivider
*/
public MotifSplitPaneDivider(BasicSplitPaneUI ui) {
super(ui);
highlightColor = UIManager.getColor("SplitPane.highlight");
shadowColor = UIManager.getColor("SplitPane.shadow");
focusedColor = UIManager.getColor("SplitPane.activeThumb");
setDividerSize(hThumbWidth + pad);
}
/**
* {@code setupExtensions} installs the mouse listener for the popup menu,
* and fixes some egregious defaults in {@code JSplitPane}.
*/
private void setupExtensions()
{
SplitPaneUI anUi = getUI();
if (anUi instanceof BasicSplitPaneUI)
{
((BasicSplitPaneUI) anUi).getDivider().addMouseListener(new PopupListener());
}
setResizeWeight(0.5);
}
/**
* Creates a new Motif SplitPaneDivider
*/
public MotifSplitPaneDivider(BasicSplitPaneUI ui) {
super(ui);
highlightColor = UIManager.getColor("SplitPane.highlight");
shadowColor = UIManager.getColor("SplitPane.shadow");
focusedColor = UIManager.getColor("SplitPane.activeThumb");
setDividerSize(hThumbWidth + pad);
}
/**
* Sets the SplitPaneUI that is using the receiver. This is completely
* overriden from super to create a different MouseHandler.
*/
public void setBasicSplitPaneUI(BasicSplitPaneUI newUI) {
if (splitPane != null) {
splitPane.removePropertyChangeListener(this);
if (mouseHandler != null) {
splitPane.removeMouseListener(mouseHandler);
splitPane.removeMouseMotionListener(mouseHandler);
removeMouseListener(mouseHandler);
removeMouseMotionListener(mouseHandler);
mouseHandler = null;
}
}
splitPaneUI = newUI;
if (newUI != null) {
splitPane = newUI.getSplitPane();
if (splitPane != null) {
if (mouseHandler == null) mouseHandler=new MotifMouseHandler();
splitPane.addMouseListener(mouseHandler);
splitPane.addMouseMotionListener(mouseHandler);
addMouseListener(mouseHandler);
addMouseMotionListener(mouseHandler);
splitPane.addPropertyChangeListener(this);
if (splitPane.isOneTouchExpandable()) {
oneTouchExpandableChanged();
}
}
}
else {
splitPane = null;
}
}
@SuppressWarnings("deprecation")
@Override
public void layout() {
super.layout();
BasicSplitPaneDivider divider = ((BasicSplitPaneUI)getUI()).getDivider();
Rectangle bounds = divider.getBounds();
if( orientation == HORIZONTAL_SPLIT ) {
bounds.x -= dividerDragOffset;
bounds.width = dividerDragSize;
} else {
bounds.y -= dividerDragOffset;
bounds.height = dividerDragSize;
}
divider.setBounds(bounds);
}
/**
* Creates a new SeaGlassSplitPaneDivider object.
*
* @param ui the parent UI delegate.
*/
public SeaGlassSplitPaneDivider(BasicSplitPaneUI ui) {
super(ui);
oneTouchSize = DefaultLookup.getInt(ui.getSplitPane(), ui, "SplitPane.oneTouchButtonSize", ONE_TOUCH_SIZE);
oneTouchOffset = DefaultLookup.getInt(ui.getSplitPane(), ui, "SplitPane.oneTouchButtonOffset", ONE_TOUCH_OFFSET);
centerOneTouchButtons = DefaultLookup.getBoolean(ui.getSplitPane(), ui, "SplitPane.centerOneTouchButtons", true);
oneTouchVOffset = DefaultLookup.getInt(ui.getSplitPane(), ui, "SplitPane.oneTouchButtonVOffset", 0);
setLayout(new DividerLayout());
}
/**
* Creates a new Motif SplitPaneDivider
*/
public MotifSplitPaneDivider(BasicSplitPaneUI ui) {
super(ui);
highlightColor = UIManager.getColor("SplitPane.highlight");
shadowColor = UIManager.getColor("SplitPane.shadow");
focusedColor = UIManager.getColor("SplitPane.activeThumb");
setDividerSize(hThumbWidth + pad);
}
private void tweakSplitPaneUI(JSplitPane splitPane) {
splitPane.setOpaque(false);
splitPane.setBorder(null);
splitPane.setDividerSize(3);
if (!(splitPane.getUI() instanceof BasicSplitPaneUI)) {
return;
}
BasicSplitPaneDivider divider = ((BasicSplitPaneUI) splitPane.getUI()).getDivider();
if (divider != null) {
divider.setBorder(null);
}
}
private void tweakSplitPaneUI(JSplitPane splitPane) {
splitPane.setOpaque(false);
splitPane.setBorder(null);
splitPane.setDividerSize(3);
if (!(splitPane.getUI() instanceof BasicSplitPaneUI)) {
return;
}
BasicSplitPaneDivider divider = ((BasicSplitPaneUI) splitPane.getUI()).getDivider();
if (divider != null) {
divider.setBorder(null);
}
}
/**
* Creates a new Motif SplitPaneDivider
*/
public MotifSplitPaneDivider(BasicSplitPaneUI ui) {
super(ui);
highlightColor = UIManager.getColor("SplitPane.highlight");
shadowColor = UIManager.getColor("SplitPane.shadow");
focusedColor = UIManager.getColor("SplitPane.activeThumb");
setDividerSize(hThumbWidth + pad);
}
protected BasicSplitPaneDivider createInstanceImpl() {
final JSplitPane split = new JSplitPane(orientation);
BasicSplitPaneUI ui = split.getUI() instanceof BasicSplitPaneUI ?
(BasicSplitPaneUI)split.getUI() : new BasicSplitPaneUI() {
{ installUI(split); }
};
return new BasicSplitPaneDivider(ui);
}
private void tweakUI() {
setBorder(null);
setDividerSize(5);
if (!(getUI() instanceof BasicSplitPaneUI)) return;
BasicSplitPaneDivider divider = ((BasicSplitPaneUI)getUI()).getDivider();
if (divider != null) {
Color c = UIUtils.isNimbus() ? UIUtils.getDisabledLineColor() :
new JSeparator().getForeground();
divider.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, c));
}
}
private Component getDivider() {
if (getUI() == null) {
return null;
}
return ((BasicSplitPaneUI) getUI()).getDivider();
}
private void tweakUI() {
if (!(getUI() instanceof BasicSplitPaneUI)) {
return;
}
BasicSplitPaneDivider divider = ((BasicSplitPaneUI) getUI()).getDivider();
if (divider != null) {
divider.addMouseListener(new DividerMouseListener());
}
}
/**
* Creates a new Motif SplitPaneDivider
*/
public MotifSplitPaneDivider(BasicSplitPaneUI ui) {
super(ui);
highlightColor = UIManager.getColor("SplitPane.highlight");
shadowColor = UIManager.getColor("SplitPane.shadow");
focusedColor = UIManager.getColor("SplitPane.activeThumb");
setDividerSize(hThumbWidth + pad);
}
/**
* Sets the SplitPaneUI that is using the receiver. This is completely
* overriden from super to create a different MouseHandler.
*/
public void setBasicSplitPaneUI(BasicSplitPaneUI newUI) {
if (splitPane != null) {
splitPane.removePropertyChangeListener(this);
if (mouseHandler != null) {
splitPane.removeMouseListener(mouseHandler);
splitPane.removeMouseMotionListener(mouseHandler);
removeMouseListener(mouseHandler);
removeMouseMotionListener(mouseHandler);
mouseHandler = null;
}
}
splitPaneUI = newUI;
if (newUI != null) {
splitPane = newUI.getSplitPane();
if (splitPane != null) {
if (mouseHandler == null) mouseHandler=new MotifMouseHandler();
splitPane.addMouseListener(mouseHandler);
splitPane.addMouseMotionListener(mouseHandler);
addMouseListener(mouseHandler);
addMouseMotionListener(mouseHandler);
splitPane.addPropertyChangeListener(this);
if (splitPane.isOneTouchExpandable()) {
oneTouchExpandableChanged();
}
}
}
else {
splitPane = null;
}
}
/**
* Creates a new Motif SplitPaneDivider
*/
public MotifSplitPaneDivider(BasicSplitPaneUI ui) {
super(ui);
highlightColor = UIManager.getColor("SplitPane.highlight");
shadowColor = UIManager.getColor("SplitPane.shadow");
focusedColor = UIManager.getColor("SplitPane.activeThumb");
setDividerSize(hThumbWidth + pad);
}
/**
* Sets the SplitPaneUI that is using the receiver. This is completely
* overriden from super to create a different MouseHandler.
*/
public void setBasicSplitPaneUI(BasicSplitPaneUI newUI) {
if (splitPane != null) {
splitPane.removePropertyChangeListener(this);
if (mouseHandler != null) {
splitPane.removeMouseListener(mouseHandler);
splitPane.removeMouseMotionListener(mouseHandler);
removeMouseListener(mouseHandler);
removeMouseMotionListener(mouseHandler);
mouseHandler = null;
}
}
splitPaneUI = newUI;
if (newUI != null) {
splitPane = newUI.getSplitPane();
if (splitPane != null) {
if (mouseHandler == null) mouseHandler=new MotifMouseHandler();
splitPane.addMouseListener(mouseHandler);
splitPane.addMouseMotionListener(mouseHandler);
addMouseListener(mouseHandler);
addMouseMotionListener(mouseHandler);
splitPane.addPropertyChangeListener(this);
if (splitPane.isOneTouchExpandable()) {
oneTouchExpandableChanged();
}
}
}
else {
splitPane = null;
}
}
/**
* Creates a new Motif SplitPaneDivider
*/
public MotifSplitPaneDivider(BasicSplitPaneUI ui) {
super(ui);
highlightColor = UIManager.getColor("SplitPane.highlight");
shadowColor = UIManager.getColor("SplitPane.shadow");
focusedColor = UIManager.getColor("SplitPane.activeThumb");
setDividerSize(hThumbWidth + pad);
}
/**
* Sets the SplitPaneUI that is using the receiver. This is completely
* overriden from super to create a different MouseHandler.
*/
public void setBasicSplitPaneUI(BasicSplitPaneUI newUI) {
if (splitPane != null) {
splitPane.removePropertyChangeListener(this);
if (mouseHandler != null) {
splitPane.removeMouseListener(mouseHandler);
splitPane.removeMouseMotionListener(mouseHandler);
removeMouseListener(mouseHandler);
removeMouseMotionListener(mouseHandler);
mouseHandler = null;
}
}
splitPaneUI = newUI;
if (newUI != null) {
splitPane = newUI.getSplitPane();
if (splitPane != null) {
if (mouseHandler == null) mouseHandler=new MotifMouseHandler();
splitPane.addMouseListener(mouseHandler);
splitPane.addMouseMotionListener(mouseHandler);
addMouseListener(mouseHandler);
addMouseMotionListener(mouseHandler);
splitPane.addPropertyChangeListener(this);
if (splitPane.isOneTouchExpandable()) {
oneTouchExpandableChanged();
}
}
}
else {
splitPane = null;
}
}
/**
* Sets the SplitPaneUI that is using the receiver. This is completely
* overriden from super to create a different MouseHandler.
*/
public void setBasicSplitPaneUI(BasicSplitPaneUI newUI) {
if (splitPane != null) {
splitPane.removePropertyChangeListener(this);
if (mouseHandler != null) {
splitPane.removeMouseListener(mouseHandler);
splitPane.removeMouseMotionListener(mouseHandler);
removeMouseListener(mouseHandler);
removeMouseMotionListener(mouseHandler);
mouseHandler = null;
}
}
splitPaneUI = newUI;
if (newUI != null) {
splitPane = newUI.getSplitPane();
if (splitPane != null) {
if (mouseHandler == null) mouseHandler=new MotifMouseHandler();
splitPane.addMouseListener(mouseHandler);
splitPane.addMouseMotionListener(mouseHandler);
addMouseListener(mouseHandler);
addMouseMotionListener(mouseHandler);
splitPane.addPropertyChangeListener(this);
if (splitPane.isOneTouchExpandable()) {
oneTouchExpandableChanged();
}
}
}
else {
splitPane = null;
}
}