At the moment, when you try to manually resize a TopComponent, it will show a black line showing the future size of the TopComponent.
I'd like to know what is the JComponent
behind this black line? And how can i access it?
EDIT
The first part of my question was answered. The component shown in the attached picture is a JSplitPane
.
Right now, i'd like to be able to access it (i.e get the instance of the JSplitPane
's used for TopComponent
resizing in the netbeans platform.
there is JSplitPane,
but not sure if Netbeans is compiled in Java (in compare with Eclipse)
EDIT I'd like to add a listener on it.
add PropertyChangeListener to the JSplitPane,
there are a few usefull methods for if (propertyName.equals(JSplitPane.XxxXxx))
notice for Nested JSplitPane, have to add listener for each of JSplitPanes separatelly
for example
.
import java.awt.Dimension;
import java.awt.GridLayout;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTable;
public class JSplitPaneToy {
public static void main(String[] args) {
JSplitPane sp = new JSplitPane(JSplitPane.VERTICAL_SPLIT, makePanel(), makePanel());
JPanel pnl = new JPanel();
pnl.setLayout(new GridLayout(4, 1, 10, 10));
pnl.add(makePanel());
pnl.add(makePanel());
pnl.add(makePanel());
pnl.add(makePanel());
PropertyChangeListener propertyChangeListener = new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent changeEvent) {
JSplitPane sourceSplitPane = (JSplitPane) changeEvent.getSource();
String propertyName = changeEvent.getPropertyName();
if (propertyName.equals(JSplitPane.LAST_DIVIDER_LOCATION_PROPERTY)) {
int current = sourceSplitPane.getDividerLocation();
System.out.println("Current: " + current);
Integer last = (Integer) changeEvent.getNewValue();
System.out.println("Last: " + last);
Integer priorLast = (Integer) changeEvent.getOldValue();
System.out.println("Prior last: " + priorLast);
}else if (propertyName.equals(JSplitPane.RESIZE_WEIGHT_PROPERTY)) {
int current = sourceSplitPane.getDividerLocation();
System.out.println("Current: " + current);
Integer last = (Integer) changeEvent.getNewValue();
System.out.println("Last: " + last);
Integer priorLast = (Integer) changeEvent.getOldValue();
System.out.println("Prior last: " + priorLast);
}
}
};
sp.addPropertyChangeListener(propertyChangeListener);
JFrame frame = new JFrame("JSplitPane Toy");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridLayout(0, 2, 10, 10));
frame.add(sp);
frame.add(pnl);
frame.pack();
frame.setVisible(true);
}
private static JScrollPane makePanel() {
JScrollPane pane = new JScrollPane(new JTable(
new Object[][]{{0, 1, 2}, {1, 2, 3}, {2, 3, 4}}, new Object[]{1, 2, 3}));
pane.setPreferredSize(new Dimension(200, 100));
return pane;
}
}