Java X Windows
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.beans.PropertyVetoException;
import java.io.FileReader;
import javax.swing.DefaultDesktopManager;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JViewport;
import javax.swing.event.MouseInputAdapter;
public class JavaXWin extends JFrame
{
protected int m_count;
protected int m_tencount;
protected int m_wmX, m_wmY;
protected JButton m_newFrame;
protected JDesktopPane m_desktop;
protected WindowManager m_wm;
protected JViewport viewport;
public JavaXWin() {
setTitle("JavaXWin");
m_count = m_tencount = 0;
m_desktop = new JDesktopPane();
JScrollPane scroller = new JScrollPane();
m_wm = new WindowManager(m_desktop);
m_desktop.setDesktopManager(m_wm);
m_desktop.add(m_wm.getWindowWatcher(),
JLayeredPane.PALETTE_LAYER);
m_wm.getWindowWatcher().setBounds(555,5,200,150);
viewport = new JViewport() {
public void setViewPosition(Point p) {
super.setViewPosition(p);
m_wm.getWindowWatcher().setLocation(
m_wm.getWindowWatcher().getX() +
(getViewPosition().x-m_wmX),
m_wm.getWindowWatcher().getY() +
(getViewPosition().y-m_wmY));
m_wmX = getViewPosition().x;
m_wmY = getViewPosition().y;
}
};
viewport.setView(m_desktop);
scroller.setViewport(viewport);
ComponentAdapter ca = new ComponentAdapter() {
JViewport view = viewport;
public void componentResized(ComponentEvent e) {
m_wm.getWindowWatcher().setLocation(
view.getViewPosition().x + view.getWidth()-
m_wm.getWindowWatcher().getWidth()-15,
view.getViewPosition().y + 5);
}
};
viewport.addComponentListener(ca);
m_newFrame = new JButton("New Frame");
m_newFrame.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
newFrame();
}
});
JPanel topPanel = new JPanel(true);
topPanel.setLayout(new FlowLayout());
getContentPane().setLayout(new BorderLayout());
getContentPane().add("North", topPanel);
getContentPane().add("Center", scroller);
topPanel.add(m_newFrame);
Dimension dim = getToolkit().getScreenSize();
setSize(800,600);
setLocation(dim.width/2-getWidth()/2,
dim.height/2-getHeight()/2);
m_desktop.setPreferredSize(new Dimension(1600,1200));
setVisible(true);
WindowListener l = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
addWindowListener(l);
}
public void newFrame() {
JInternalFrame jif = new JInternalFrame("Frame " + m_count,
true, true, true, true);
jif.setBounds(20*(m_count%10) + m_tencount*80,
20*(m_count%10), 200, 200);
JTextArea text = new JTextArea();
JScrollPane scroller = new JScrollPane();
scroller.getViewport().add(text);
try {
FileReader fileStream = new FileReader("");
text.read(fileStream, "JavaLinux.txt");
}
catch (Exception e) {
text.setText("* Could not read JavaLinux.txt *");
}
jif.getContentPane().add(scroller);
m_desktop.add(jif);
try {
jif.setSelected(true);
}
catch (PropertyVetoException pve) {
System.out.println("Could not select " + jif.getTitle());
}
m_count++;
if (m_count%10 == 0) {
if (m_tencount < 3)
m_tencount++;
else
m_tencount = 0;
}
}
public static void main(String[] args) {
new JavaXWin();
}
}
class WindowManager
extends DefaultDesktopManager
{
protected WindowWatcher ww;
public WindowManager(JDesktopPane desktop) {
ww = new WindowWatcher(desktop);
}
public WindowWatcher getWindowWatcher() { return ww; }
public void activateFrame(JInternalFrame f) {
super.activateFrame(f);
ww.repaint();
}
public void beginDraggingFrame(JComponent f) {
super.beginDraggingFrame(f);
ww.repaint();
}
public void beginResizingFrame(JComponent f, int direction) {
super.beginResizingFrame(f,direction);
ww.repaint();
}
public void closeFrame(JInternalFrame f) {
super.closeFrame(f);
ww.repaint();
}
public void deactivateFrame(JInternalFrame f) {
super.deactivateFrame(f);
ww.repaint();
}
public void deiconifyFrame(JInternalFrame f) {
super.deiconifyFrame(f);
ww.repaint();
}
public void dragFrame(JComponent f, int newX, int newY) {
f.setLocation(newX, newY);
ww.repaint();
}
public void endDraggingFrame(JComponent f) {
super.endDraggingFrame(f);
ww.repaint();
}
public void endResizingFrame(JComponent f) {
super.endResizingFrame(f);
ww.repaint();
}
public void iconifyFrame(JInternalFrame f) {
super.iconifyFrame(f);
ww.repaint();
}
public void maximizeFrame(JInternalFrame f) {
super.maximizeFrame(f);
ww.repaint();
}
public void minimizeFrame(JInternalFrame f) {
super.minimizeFrame(f);
ww.repaint();
}
public void openFrame(JInternalFrame f) {
super.openFrame(f);
ww.repaint();
}
public void resizeFrame(JComponent f,
int newX, int newY, int newWidth, int newHeight) {
f.setBounds(newX, newY, newWidth, newHeight);
ww.repaint();
}
public void setBoundsForFrame(JComponent f,
int newX, int newY, int newWidth, int newHeight) {
f.setBounds(newX, newY, newWidth, newHeight);
ww.repaint();
}
}
class WindowWatcher extends JPanel
{
protected static final Color C_UNSELECTED =
new Color(123, 123, 123);
protected static final Color C_SELECTED =
new Color(243, 232, 165);
protected static final Color C_BACKGROUND =
new Color(5,165,165);
protected static final Color C_WWATCHER =
new Color(203,226,0);
protected float m_widthratio, m_heightratio;
protected int m_width, m_height, m_XDifference, m_YDifference;
protected JDesktopPane m_desktop;
protected NorthResizeEdge m_northResizer;
protected SouthResizeEdge m_southResizer;
protected EastResizeEdge m_eastResizer;
protected WestResizeEdge m_westResizer;
public WindowWatcher(JDesktopPane desktop) {
m_desktop = desktop;
setOpaque(true);
m_northResizer = new NorthResizeEdge(this);
m_southResizer = new SouthResizeEdge(this);
m_eastResizer = new EastResizeEdge(this);
m_westResizer = new WestResizeEdge(this);
setLayout(new BorderLayout());
add(m_northResizer, BorderLayout.NORTH);
add(m_southResizer, BorderLayout.SOUTH);
add(m_eastResizer, BorderLayout.EAST);
add(m_westResizer, BorderLayout.WEST);
MouseInputAdapter ma = new MouseInputAdapter() {
public void mousePressed(MouseEvent e) {
m_XDifference = e.getX();
m_YDifference = e.getY();
}
public void mouseDragged(MouseEvent e) {
int vx = 0;
int vy = 0;
if (m_desktop.getParent() instanceof JViewport) {
vx = ((JViewport)
m_desktop.getParent()).getViewPosition().x;
vy = ((JViewport)
m_desktop.getParent()).getViewPosition().y;
}
int w = m_desktop.getParent().getWidth();
int h = m_desktop.getParent().getHeight();
int x = getX();
int y = getY();
int ex = e.getX();
int ey = e.getY();
if ((ey + y > vy && ey + y < h+vy) &&
(ex + x > vx && ex + x < w+vx))
{
setLocation(ex-m_XDifference + x, ey-m_YDifference + y);
}
else if (!(ey + y > vy && ey + y < h+vy) &&
(ex + x > vx && ex + x < w+vx))
{
if (!(ey + y > vy) && ey + y < h+vy)
setLocation(ex-m_XDifference + x, vy-m_YDifference);
else if (ey + y > vy && !(ey + y < h+vy))
setLocation(ex-m_XDifference + x, (h+vy)-m_YDifference);
}
else if ((ey + y >vy && ey + y < h+vy) &&
!(ex + x > vx && ex + x < w+vx))
{
if (!(ex + x > vx) && ex + x < w+vx)
setLocation(vx-m_XDifference, ey-m_YDifference + y);
else if (ex + x > vx && !(ex + x < w))
setLocation((w+vx)-m_XDifference, ey-m_YDifference + y);
}
else if (!(ey + y > vy) && ey + y < h+vy &&
!(ex + x > vx) && ex + x < w+vx)
setLocation(vx-m_XDifference, vy-m_YDifference);
else if (!(ey + y > vy) && ey + y < h+vy &&
ex + x > vx && !(ex + x < w+vx))
setLocation((w+vx)-m_XDifference, vy-m_YDifference);
else if (ey + y > vy && !(ey + y < h+vy) &&
!(ex + x > vx) && ex + x < w+vx)
setLocation(vx-m_XDifference, (h+vy)-m_YDifference);
else if (ey + y > vy && !(ey + y < h+vy) &&
ex + x > vx && !(ex + x < w+vx))
setLocation((w+vx)-m_XDifference, (h+vy)-m_YDifference);
}
public void mouseEntered(MouseEvent e) {
setCursor(Cursor.getPredefinedCursor(
Cursor.MOVE_CURSOR));
}
public void mouseExited(MouseEvent e) {
setCursor(Cursor.getPredefinedCursor(
Cursor.DEFAULT_CURSOR));
}
};
addMouseListener(ma);
addMouseMotionListener(ma);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
m_height = getHeight();
m_width = getWidth();
g.setColor(C_BACKGROUND);
g.fillRect(0,0,m_width,m_height);
Component[] components = m_desktop.getComponents();
m_widthratio = ((float)
m_desktop.getWidth())/((float) m_width);
m_heightratio = ((float)
m_desktop.getHeight())/((float) m_height);
for (int i=components.length-1; i>-1; i--) {
if (components[i].isVisible()) {
g.setColor(C_UNSELECTED);
if (components[i] instanceof JInternalFrame) {
if (((JInternalFrame) components[i]).isSelected())
g.setColor(C_SELECTED);
}
else if(components[i] instanceof WindowWatcher)
g.setColor(C_WWATCHER);
g.fillRect(
(int)(((float)components[i].getX())/m_widthratio),
(int)(((float)components[i].getY())/m_heightratio),
(int)(((float)components[i].getWidth())/m_widthratio),
(int)(((float)components[i].getHeight())/m_heightratio));
g.setColor(Color.black);
g.drawRect(
(int)(((float)components[i].getX())/m_widthratio),
(int)(((float)components[i].getY())/m_heightratio),
(int)(((float)components[i].getWidth())/m_widthratio),
(int)(((float)components[i].getHeight())/m_heightratio));
}
}
g.drawLine(m_width/2,0,m_width/2,m_height);
g.drawLine(0,m_height/2,m_width,m_height/2);
}
}
class EastResizeEdge extends JPanel
implements MouseListener, MouseMotionListener {
private int WIDTH = 3;
private int MIN_WIDTH = 50;
private boolean m_dragging;
private JComponent m_resizeComponent;
public EastResizeEdge(JComponent c) {
m_resizeComponent = c;
addMouseListener(this);
addMouseMotionListener(this);
setOpaque(true);
setBackground(Color.black);
}
public Dimension getPreferredSize() {
return new Dimension(WIDTH, m_resizeComponent.getHeight());
}
public void mouseClicked(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {
m_dragging = false;
}
public void mouseDragged(MouseEvent e) {
if (m_resizeComponent.getWidth() + e.getX() >= MIN_WIDTH)
m_resizeComponent.setBounds(m_resizeComponent.getX(),
m_resizeComponent.getY(),
m_resizeComponent.getWidth() + e.getX(),
m_resizeComponent.getHeight());
else
m_resizeComponent.setBounds(m_resizeComponent.getX(),
m_resizeComponent.getY(),
MIN_WIDTH, m_resizeComponent.getHeight());
m_resizeComponent.validate();
}
public void mouseEntered(MouseEvent e) {
if (!m_dragging)
setCursor(Cursor.getPredefinedCursor(
Cursor.E_RESIZE_CURSOR));
}
public void mouseExited(MouseEvent e) {
if (!m_dragging)
setCursor(Cursor.getPredefinedCursor(
Cursor.DEFAULT_CURSOR));
}
public void mousePressed(MouseEvent e) {
//toFront();
m_dragging = true;
}
}
class NorthResizeEdge extends JPanel
implements MouseListener, MouseMotionListener {
private static final int NORTH = 0;
private static final int NORTHEAST = 1;
private static final int NORTHWEST = 2;
private int CORNER = 10;
private int HEIGHT = 3;
private int MIN_WIDTH = 50;
private int MIN_HEIGHT = 50;
private int m_width, m_dragX, m_dragY, m_rightX, m_lowerY;
private boolean m_dragging;
private JComponent m_resizeComponent;
private int m_mode;
public NorthResizeEdge(JComponent c) {
m_resizeComponent = c;
addMouseListener(this);
addMouseMotionListener(this);
setOpaque(true);
setBackground(Color.black);
}
public Dimension getPreferredSize() {
return new Dimension(m_resizeComponent.getWidth(), HEIGHT);
}
public void mouseClicked(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {
if (!m_dragging) {
if (e.getX() < CORNER) {
setCursor(Cursor.getPredefinedCursor(
Cursor.NW_RESIZE_CURSOR));
}
else if(e.getX() > getWidth()-CORNER) {
setCursor(Cursor.getPredefinedCursor(
Cursor.NE_RESIZE_CURSOR));
}
else {
setCursor(Cursor.getPredefinedCursor(
Cursor.N_RESIZE_CURSOR));
}
}
}
public void mouseReleased(MouseEvent e) {
m_dragging = false;
}
public void mouseDragged(MouseEvent e) {
int h = m_resizeComponent.getHeight();
int w = m_resizeComponent.getWidth();
int x = m_resizeComponent.getX();
int y = m_resizeComponent.getY();
int ex = e.getX();
int ey = e.getY();
switch (m_mode) {
case NORTH:
if (h-(ey-m_dragY) >= MIN_HEIGHT)
m_resizeComponent.setBounds(x, y + (ey-m_dragY),
w, h-(ey-m_dragY));
else
m_resizeComponent.setBounds(x,
m_lowerY-MIN_HEIGHT, w, MIN_HEIGHT);
break;
case NORTHEAST:
if (h-(ey-m_dragY) >= MIN_HEIGHT
&& w + (ex-(getWidth()-CORNER)) >= MIN_WIDTH)
m_resizeComponent.setBounds(x,
y + (ey-m_dragY), w + (ex-(getWidth()-CORNER)),
h-(ey-m_dragY));
else if (h-(ey-m_dragY) >= MIN_HEIGHT
&& !(w + (ex-(getWidth()-CORNER)) >= MIN_WIDTH))
m_resizeComponent.setBounds(x,
y + (ey-m_dragY), MIN_WIDTH, h-(ey-m_dragY));
else if (!(h-(ey-m_dragY) >= MIN_HEIGHT)
&& w + (ex-(getWidth()-CORNER)) >= MIN_WIDTH)
m_resizeComponent.setBounds(x,
m_lowerY-MIN_HEIGHT, w + (ex-(getWidth()-CORNER)),
MIN_HEIGHT);
else
m_resizeComponent.setBounds(x,
m_lowerY-MIN_HEIGHT, MIN_WIDTH, MIN_HEIGHT);
break;
case NORTHWEST:
if (h-(ey-m_dragY) >= MIN_HEIGHT
&& w-(ex-m_dragX) >= MIN_WIDTH)
m_resizeComponent.setBounds(x + (ex-m_dragX),
y + (ey-m_dragY), w-(ex-m_dragX),
h-(ey-m_dragY));
else if (h-(ey-m_dragY) >= MIN_HEIGHT
&& !(w-(ex-m_dragX) >= MIN_WIDTH)) {
if (x + MIN_WIDTH < m_rightX)
m_resizeComponent.setBounds(m_rightX-MIN_WIDTH,
y + (ey-m_dragY), MIN_WIDTH, h-(ey-m_dragY));
else
m_resizeComponent.setBounds(x,
y + (ey-m_dragY), w, h-(ey-m_dragY));
}
else if (!(h-(ey-m_dragY) >= MIN_HEIGHT)
&& w-(ex-m_dragX) >= MIN_WIDTH)
m_resizeComponent.setBounds(x + (ex-m_dragX),
m_lowerY-MIN_HEIGHT, w-(ex-m_dragX), MIN_HEIGHT);
else
m_resizeComponent.setBounds(m_rightX-MIN_WIDTH,
m_lowerY-MIN_HEIGHT, MIN_WIDTH, MIN_HEIGHT);
break;
}
m_rightX = x + w;
m_resizeComponent.validate();
}
public void mouseEntered(MouseEvent e) {
mouseMoved(e);
}
public void mouseExited(MouseEvent e) {
if (!m_dragging)
setCursor(Cursor.getPredefinedCursor(
Cursor.DEFAULT_CURSOR));
}
public void mousePressed(MouseEvent e) {
m_dragging = true;
m_dragX = e.getX();
m_dragY = e.getY();
m_lowerY = m_resizeComponent.getY()
+ m_resizeComponent.getHeight();
if (e.getX() < CORNER) {
m_mode = NORTHWEST;
}
else if(e.getX() > getWidth()-CORNER) {
m_mode = NORTHEAST;
}
else {
m_mode = NORTH;
}
}
}
class SouthResizeEdge extends JPanel
implements MouseListener, MouseMotionListener {
private static final int SOUTH = 0;
private static final int SOUTHEAST = 1;
private static final int SOUTHWEST = 2;
private int CORNER = 10;
private int HEIGHT = 3;
private int MIN_WIDTH = 50;
private int MIN_HEIGHT = 50;
private int m_width, m_dragX, m_dragY, m_rightX;
private boolean m_dragging;
private JComponent m_resizeComponent;
private int m_mode;
public SouthResizeEdge(JComponent c) {
m_resizeComponent = c;
addMouseListener(this);
addMouseMotionListener(this);
setOpaque(true);
setBackground(Color.black);
}
public Dimension getPreferredSize() {
return new Dimension(m_resizeComponent.getWidth(), HEIGHT);
}
public void mouseClicked(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {
if (!m_dragging) {
if (e.getX() < CORNER) {
setCursor(Cursor.getPredefinedCursor(
Cursor.SW_RESIZE_CURSOR));
}
else if(e.getX() > getWidth()-CORNER) {
setCursor(Cursor.getPredefinedCursor(
Cursor.SE_RESIZE_CURSOR));
}
else {
setCursor(Cursor.getPredefinedCursor(
Cursor.S_RESIZE_CURSOR));
}
}
}
public void mouseReleased(MouseEvent e) {
m_dragging = false;
}
public void mouseDragged(MouseEvent e) {
int h = m_resizeComponent.getHeight();
int w = m_resizeComponent.getWidth();
int x = m_resizeComponent.getX();
int y = m_resizeComponent.getY();
int ex = e.getX();
int ey = e.getY();
switch (m_mode) {
case SOUTH:
if (h+(ey-m_dragY) >= MIN_HEIGHT)
m_resizeComponent.setBounds(x, y, w, h+(ey-m_dragY));
else
m_resizeComponent.setBounds(x, y, w, MIN_HEIGHT);
break;
case SOUTHEAST:
if (h+(ey-m_dragY) >= MIN_HEIGHT
&& w + (ex-(getWidth()-CORNER)) >= MIN_WIDTH)
m_resizeComponent.setBounds(x, y,
w + (ex-(getWidth()-CORNER)), h+(ey-m_dragY));
else if (h+(ey-m_dragY) >= MIN_HEIGHT
&& !(w + (ex-(getWidth()-CORNER)) >= MIN_WIDTH))
m_resizeComponent.setBounds(x, y,
MIN_WIDTH, h+(ey-m_dragY));
else if (!(h+(ey-m_dragY) >= MIN_HEIGHT)
&& w + (ex-(getWidth()-CORNER)) >= MIN_WIDTH)
m_resizeComponent.setBounds(x, y,
w + (ex-(getWidth()-CORNER)), MIN_HEIGHT);
else
m_resizeComponent.setBounds(x,
y, MIN_WIDTH, MIN_HEIGHT);
break;
case SOUTHWEST:
if (h+(ey-m_dragY) >= MIN_HEIGHT
&& w-(ex-m_dragX) >= MIN_WIDTH)
m_resizeComponent.setBounds(x + (ex-m_dragX), y,
w-(ex-m_dragX), h+(ey-m_dragY));
else if (h+(ey-m_dragY) >= MIN_HEIGHT
&& !(w-(ex-m_dragX) >= MIN_WIDTH)) {
if (x + MIN_WIDTH < m_rightX)
m_resizeComponent.setBounds(m_rightX-MIN_WIDTH, y,
MIN_WIDTH, h+(ey-m_dragY));
else
m_resizeComponent.setBounds(x, y, w,
h+(ey-m_dragY));
}
else if (!(h+(ey-m_dragY) >= MIN_HEIGHT)
&& w-(ex-m_dragX) >= MIN_WIDTH)
m_resizeComponent.setBounds(x + (ex-m_dragX), y,
w-(ex-m_dragX), MIN_HEIGHT);
else
m_resizeComponent.setBounds(m_rightX-MIN_WIDTH,
y, MIN_WIDTH, MIN_HEIGHT);
break;
}
m_rightX = x + w;
m_resizeComponent.validate();
}
public void mouseEntered(MouseEvent e) {
mouseMoved(e);
}
public void mouseExited(MouseEvent e) {
if (!m_dragging)
setCursor(Cursor.getPredefinedCursor(
Cursor.DEFAULT_CURSOR));
}
public void mousePressed(MouseEvent e) {
//toFront();
m_dragging = true;
m_dragX = e.getX();
m_dragY = e.getY();
if (e.getX() < CORNER) {
m_mode = SOUTHWEST;
}
else if(e.getX() > getWidth()-CORNER) {
m_mode = SOUTHEAST;
}
else {
m_mode = SOUTH;
}
}
}
class WestResizeEdge extends JPanel
implements MouseListener, MouseMotionListener {
private int WIDTH = 3;
private int MIN_WIDTH = 50;
private int m_dragX, m_rightX;
private boolean m_dragging;
private JComponent m_resizeComponent;
public WestResizeEdge(JComponent c) {
m_resizeComponent = c;
addMouseListener(this);
addMouseMotionListener(this);
setOpaque(true);
setBackground(Color.black);
}
public Dimension getPreferredSize() {
return new Dimension(WIDTH, m_resizeComponent.getHeight());
}
public void mouseClicked(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {
m_dragging = false;
}
public void mouseDragged(MouseEvent e) {
if (m_resizeComponent.getWidth()-
(e.getX()-m_dragX) >= MIN_WIDTH)
m_resizeComponent.setBounds(
m_resizeComponent.getX() + (e.getX()-m_dragX),
m_resizeComponent.getY(),
m_resizeComponent.getWidth()-(e.getX()-m_dragX),
m_resizeComponent.getHeight());
else
if (m_resizeComponent.getX() + MIN_WIDTH < m_rightX)
m_resizeComponent.setBounds(m_rightX-MIN_WIDTH,
m_resizeComponent.getY(),
MIN_WIDTH, m_resizeComponent.getHeight());
else
m_resizeComponent.setBounds(m_resizeComponent.getX(),
m_resizeComponent.getY(),
MIN_WIDTH, m_resizeComponent.getHeight());
m_resizeComponent.validate();
}
public void mouseEntered(MouseEvent e) {
if (!m_dragging)
setCursor(Cursor.getPredefinedCursor(
Cursor.W_RESIZE_CURSOR));
}
public void mouseExited(MouseEvent e) {
if (!m_dragging)
setCursor(Cursor.getPredefinedCursor(
Cursor.DEFAULT_CURSOR));
}
public void mousePressed(MouseEvent e) {
//toFront();
m_rightX = m_resizeComponent.getX() +
m_resizeComponent.getWidth();
m_dragging = true;
m_dragX = e.getX();
}
}
Related examples in the same category