Code
JInternalFrame internal = new JInternalFrame("...");
BasicInternalFrameUI ui = (BasicInternalFrameUI) internal.getUI();
Component title = ui.getNorthPane();
for (MouseMotionListener l: title.getListeners(MouseMotionListener.class)) {
title.removeMouseMotionListener(l);
}
DragWindowListener dwl = new DragWindowListener();
title.addMouseListener(dwl);
title.addMouseMotionListener(dwl);
JPanel p = new JPanel(new BorderLayout());
p.add(new JScrollPane(new JTree()));
p.add(new JButton(new AbstractAction("close") {
@Override public void actionPerformed(ActionEvent e) {
Window w = SwingUtilities.windowForComponent((Component) e.getSource());
// w.dispose();
w.getToolkit().getSystemEventQueue().postEvent(
new WindowEvent(w, WindowEvent.WINDOW_CLOSING));
}
}), BorderLayout.SOUTH);
internal.getContentPane().add(p);
internal.setVisible(true);
KeyboardFocusManager focusManager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
focusManager.addPropertyChangeListener(e -> {
String prop = e.getPropertyName();
if ("activeWindow".equals(prop)) {
try {
internal.setSelected(Objects.nonNull(e.getNewValue()));
} catch (PropertyVetoException ex) {
throw new IllegalStateException(ex);
}
}
});
References
No comments:
Post a Comment