swing中无标题栏的拉伸问题??? 我自己写的JFrame中通过this.setUndecorated(true);把标题栏给去了,现在想实现窗体的拉伸,就是把鼠标放在窗体的边上,就能任意的拉伸窗体;请问如何实现??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 通过鼠标的监听实现,当打到边界的某个范围之内(这个你自己设置),将鼠标的形状设置为Resize状态,通过Drag事件设置frame的size Arthur(亚瑟王),你回答了我好多问题啊,先谢了!能把你上面的话说的详细点吗???我有点不理解,因为我的JFrame的contentPane = this.getContentPane();contentPane上面就放了三个JPanel,你看怎么弄一下 import java.awt.Cursor;import java.awt.Dimension;import java.awt.Point;import java.awt.event.MouseEvent;import java.awt.event.MouseMotionAdapter;import javax.swing.JFrame;class SampleJFrame extends JFrame { public SampleJFrame() { setSize(320, 240); setUndecorated(true); setVisible(true); addMouseMotionListener(new MouseMotionAdapter() { boolean dragEnabled = false; Point oldPoint = null; Point newPoint = null; public void mouseMoved(MouseEvent e) { Dimension ds = getSize(); //这里仅写了向东拉伸的状况,一共是8个方向,其中向四角拉伸应放在前面判断 if(ds.width - e.getX() > 0 && ds.width - e.getX() <= 5){ setCursor(Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR)); dragEnabled = true; newPoint = e.getPoint(); } else { setCursor(Cursor.getDefaultCursor()); dragEnabled = false; } } public void mouseDragged(MouseEvent e) { //这里应该通过Curser的形状来判断,长宽是否都需要改变 if(!dragEnabled){ return; } oldPoint = newPoint; newPoint = e.getPoint(); setSize(new Dimension(getSize().width + newPoint.x - oldPoint.x, getSize().height + newPoint.y - oldPoint.y)); } }); } public static void main(String[] args) { new SampleJFrame(); }} 刚才忘记说了,千万注意边界值的问题,frame应该给一个最小的长宽,便于在Resize的时候进行边界值判断 左上角有不是0,0的吗? 还是说setLocation()不是0,0的? 我说的是setLocation()不是0,0的情况 这和0,0没有关系的,有取得是Size,又不是location public void mouseMoved(MouseEvent e) { Dimension ds = getSize(); // 这里仅写了向东拉伸的状况,一共是8个方向,其中向四角拉伸应放在前面判断 if ((ds.width - e.getX() > 0 && ds.width - e.getX() <= 3) && (ds.height - e.getY() > 0 && ds.height - e.getY() <= 3)) { setCursor(Cursor .getPredefinedCursor(Cursor.SE_RESIZE_CURSOR)); dragEnabled = true; newPoint = e.getPoint(); } else if ((ds.width - e.getX() > 0 && ds.width - e.getX() <= 3) && (e.getY() > 0 && e.getY() <= 3)) { setCursor(Cursor .getPredefinedCursor(Cursor.NE_RESIZE_CURSOR)); dragEnabled = true; newPoint = e.getPoint(); } else if ((e.getX() > 0 && e.getX() <= 3) && (e.getY() > 0 && e.getY() <= 3)) { setCursor(Cursor .getPredefinedCursor(Cursor.NW_RESIZE_CURSOR)); dragEnabled = true; newPoint = e.getPoint(); } else if ((e.getX() > 0 && e.getX() <= 3) && (ds.height - e.getY() > 0 && ds.height - e.getY() <= 3)) { setCursor(Cursor .getPredefinedCursor(Cursor.SW_RESIZE_CURSOR)); dragEnabled = true; newPoint = e.getPoint(); } else if (e.getX() > 0 && e.getX() <= 3) { setCursor(Cursor .getPredefinedCursor(Cursor.W_RESIZE_CURSOR)); dragEnabled = true; newPoint = e.getPoint(); } else if (ds.width - e.getX() > 0 && ds.width - e.getX() <= 3) { setCursor(Cursor .getPredefinedCursor(Cursor.E_RESIZE_CURSOR)); dragEnabled = true; newPoint = e.getPoint(); } else if (ds.height - e.getY() > 0 && ds.height - e.getY() <= 3) { setCursor(Cursor .getPredefinedCursor(Cursor.S_RESIZE_CURSOR)); dragEnabled = true; newPoint = e.getPoint(); } else if (e.getY() > 0 && e.getY() <= 3) { setCursor(Cursor .getPredefinedCursor(Cursor.N_RESIZE_CURSOR)); dragEnabled = true; newPoint = e.getPoint(); } else { setCursor(Cursor.getDefaultCursor()); dragEnabled = false; } } public void mouseMoved(MouseEvent e) { Dimension ds = getSize(); // 这里仅写了向东拉伸的状况,一共是8个方向,其中向四角拉伸应放在前面判断 if ((ds.width - e.getX() > 0 && ds.width - e.getX() <= 3) && (ds.height - e.getY() > 0 && ds.height - e.getY() <= 3)) { setCursor(Cursor .getPredefinedCursor(Cursor.SE_RESIZE_CURSOR)); dragEnabled = true; newPoint = e.getPoint(); } else if ((ds.width - e.getX() > 0 && ds.width - e.getX() <= 3) && (e.getY() > 0 && e.getY() <= 3)) { setCursor(Cursor .getPredefinedCursor(Cursor.NE_RESIZE_CURSOR)); dragEnabled = true; newPoint = e.getPoint(); } else if ((e.getX() > 0 && e.getX() <= 3) && (e.getY() > 0 && e.getY() <= 3)) { setCursor(Cursor .getPredefinedCursor(Cursor.NW_RESIZE_CURSOR)); dragEnabled = true; newPoint = e.getPoint(); } else if ((e.getX() > 0 && e.getX() <= 3) && (ds.height - e.getY() > 0 && ds.height - e.getY() <= 3)) { setCursor(Cursor .getPredefinedCursor(Cursor.SW_RESIZE_CURSOR)); dragEnabled = true; newPoint = e.getPoint(); } else if (e.getX() > 0 && e.getX() <= 3) { setCursor(Cursor .getPredefinedCursor(Cursor.W_RESIZE_CURSOR)); dragEnabled = true; newPoint = e.getPoint(); } else if (ds.width - e.getX() > 0 && ds.width - e.getX() <= 3) { setCursor(Cursor .getPredefinedCursor(Cursor.E_RESIZE_CURSOR)); dragEnabled = true; newPoint = e.getPoint(); } else if (ds.height - e.getY() > 0 && ds.height - e.getY() <= 3) { setCursor(Cursor .getPredefinedCursor(Cursor.S_RESIZE_CURSOR)); dragEnabled = true; newPoint = e.getPoint(); } else if (e.getY() > 0 && e.getY() <= 3) { setCursor(Cursor .getPredefinedCursor(Cursor.N_RESIZE_CURSOR)); dragEnabled = true; newPoint = e.getPoint(); } else { setCursor(Cursor.getDefaultCursor()); dragEnabled = false; } } 给你提供个思路,觉得这样能好写,取得当前屏幕的截图,paint作为全屏window的背景,在组件的周围绘制边框,这样就不会涉及到整个界面组件的位置调整和绘制,拖拽时仅对边框缩放 1200=107.2×{[1-(1+r)^(-12)]/r}如何用java代码实现 突然没思路了,特简单的小问题 Singleton有关问题 ArrayIndexOutOfBoundsException 请求做一个小小的算法~! 一个equals 和 "==" 的问题 如何查找数组?? java的数据库编程JDBC API,要不要去下载这个包模块,JAVA2中能直接支持吗? 如何把一个APPLICATION 变为APPLET?? 不知道哪能下载JBuilder3使用手册? 请教关于java程序用命令行运行的问题,急请各位高人解答或指点 有关Applet画图的问题
能把你上面的话说的详细点吗???我有点不理解,因为我的JFrame的contentPane = this.getContentPane();
contentPane上面就放了三个JPanel,你看怎么弄一下
import java.awt.Dimension;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;import javax.swing.JFrame;class SampleJFrame extends JFrame {
public SampleJFrame() {
setSize(320, 240);
setUndecorated(true);
setVisible(true); addMouseMotionListener(new MouseMotionAdapter() {
boolean dragEnabled = false;
Point oldPoint = null;
Point newPoint = null;
public void mouseMoved(MouseEvent e) {
Dimension ds = getSize();
//这里仅写了向东拉伸的状况,一共是8个方向,其中向四角拉伸应放在前面判断
if(ds.width - e.getX() > 0 && ds.width - e.getX() <= 5){
setCursor(Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR));
dragEnabled = true;
newPoint = e.getPoint();
} else {
setCursor(Cursor.getDefaultCursor());
dragEnabled = false;
}
}
public void mouseDragged(MouseEvent e) {
//这里应该通过Curser的形状来判断,长宽是否都需要改变
if(!dragEnabled){
return;
}
oldPoint = newPoint;
newPoint = e.getPoint();
setSize(new Dimension(getSize().width + newPoint.x - oldPoint.x,
getSize().height + newPoint.y - oldPoint.y));
}
});
} public static void main(String[] args) {
new SampleJFrame();
}
}
Dimension ds = getSize(); // 这里仅写了向东拉伸的状况,一共是8个方向,其中向四角拉伸应放在前面判断
if ((ds.width - e.getX() > 0 && ds.width - e.getX() <= 3)
&& (ds.height - e.getY() > 0 && ds.height - e.getY() <= 3)) {
setCursor(Cursor
.getPredefinedCursor(Cursor.SE_RESIZE_CURSOR));
dragEnabled = true;
newPoint = e.getPoint();
} else if ((ds.width - e.getX() > 0 && ds.width - e.getX() <= 3)
&& (e.getY() > 0 && e.getY() <= 3)) {
setCursor(Cursor
.getPredefinedCursor(Cursor.NE_RESIZE_CURSOR));
dragEnabled = true;
newPoint = e.getPoint();
} else if ((e.getX() > 0 && e.getX() <= 3)
&& (e.getY() > 0 && e.getY() <= 3)) {
setCursor(Cursor
.getPredefinedCursor(Cursor.NW_RESIZE_CURSOR));
dragEnabled = true;
newPoint = e.getPoint();
} else if ((e.getX() > 0 && e.getX() <= 3)
&& (ds.height - e.getY() > 0 && ds.height - e.getY() <= 3)) {
setCursor(Cursor
.getPredefinedCursor(Cursor.SW_RESIZE_CURSOR));
dragEnabled = true;
newPoint = e.getPoint();
} else if (e.getX() > 0 && e.getX() <= 3) {
setCursor(Cursor
.getPredefinedCursor(Cursor.W_RESIZE_CURSOR));
dragEnabled = true;
newPoint = e.getPoint();
} else if (ds.width - e.getX() > 0 && ds.width - e.getX() <= 3) {
setCursor(Cursor
.getPredefinedCursor(Cursor.E_RESIZE_CURSOR));
dragEnabled = true;
newPoint = e.getPoint();
} else if (ds.height - e.getY() > 0
&& ds.height - e.getY() <= 3) {
setCursor(Cursor
.getPredefinedCursor(Cursor.S_RESIZE_CURSOR));
dragEnabled = true;
newPoint = e.getPoint();
} else if (e.getY() > 0 && e.getY() <= 3) {
setCursor(Cursor
.getPredefinedCursor(Cursor.N_RESIZE_CURSOR));
dragEnabled = true;
newPoint = e.getPoint();
} else {
setCursor(Cursor.getDefaultCursor());
dragEnabled = false;
}
}
Dimension ds = getSize(); // 这里仅写了向东拉伸的状况,一共是8个方向,其中向四角拉伸应放在前面判断
if ((ds.width - e.getX() > 0 && ds.width - e.getX() <= 3)
&& (ds.height - e.getY() > 0 && ds.height - e.getY() <= 3)) {
setCursor(Cursor
.getPredefinedCursor(Cursor.SE_RESIZE_CURSOR));
dragEnabled = true;
newPoint = e.getPoint();
} else if ((ds.width - e.getX() > 0 && ds.width - e.getX() <= 3)
&& (e.getY() > 0 && e.getY() <= 3)) {
setCursor(Cursor
.getPredefinedCursor(Cursor.NE_RESIZE_CURSOR));
dragEnabled = true;
newPoint = e.getPoint();
} else if ((e.getX() > 0 && e.getX() <= 3)
&& (e.getY() > 0 && e.getY() <= 3)) {
setCursor(Cursor
.getPredefinedCursor(Cursor.NW_RESIZE_CURSOR));
dragEnabled = true;
newPoint = e.getPoint();
} else if ((e.getX() > 0 && e.getX() <= 3)
&& (ds.height - e.getY() > 0 && ds.height - e.getY() <= 3)) {
setCursor(Cursor
.getPredefinedCursor(Cursor.SW_RESIZE_CURSOR));
dragEnabled = true;
newPoint = e.getPoint();
} else if (e.getX() > 0 && e.getX() <= 3) {
setCursor(Cursor
.getPredefinedCursor(Cursor.W_RESIZE_CURSOR));
dragEnabled = true;
newPoint = e.getPoint();
} else if (ds.width - e.getX() > 0 && ds.width - e.getX() <= 3) {
setCursor(Cursor
.getPredefinedCursor(Cursor.E_RESIZE_CURSOR));
dragEnabled = true;
newPoint = e.getPoint();
} else if (ds.height - e.getY() > 0
&& ds.height - e.getY() <= 3) {
setCursor(Cursor
.getPredefinedCursor(Cursor.S_RESIZE_CURSOR));
dragEnabled = true;
newPoint = e.getPoint();
} else if (e.getY() > 0 && e.getY() <= 3) {
setCursor(Cursor
.getPredefinedCursor(Cursor.N_RESIZE_CURSOR));
dragEnabled = true;
newPoint = e.getPoint();
} else {
setCursor(Cursor.getDefaultCursor());
dragEnabled = false;
}
}