我正在尝试创建自己的自定义边框,我通过覆盖JFrame中的paint函数来完成此操作.我遇到的问题是在构造函数之后调用paint,导致它在我的控件上绘制窗口.因此,只有当我碰巧点击它在JFrame中的位置时才会出现我的表格.我想知道是否有一种方法可以在构造函数之前使paint函数发生,或者是否有更好的方法来创建自定义边框.这是我的代码:
public class GuiMain extends JFrame {
int posX=0, posY=0;
JTable serverList;
public GuiMain()
{
this.setUndecorated(true);
this.setLayout(new GridBagLayout());
serverList = new JTable(Variables.servers, Variables.serversHeader);
add(serverList);
this.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e)
{
posX = e.getX();
posY = e.getY();
}
});
this.addMouseMotionListener(new MouseAdapter(){
public void mouseDragged(MouseEvent evt)
{
if(posY <= 20) {
setLocation(evt.getXOnScreen()-posX, evt.getYOnScreen()-posY);
}
}
});
}
public void paint(Graphics g)
{
g.setColor(new Color(100, 100, 100));
g.fillRect(0, 0, Main.width, Main.height);
g.setColor(new Color(70, 70, 70));
g.fillRect(0, 0, Main.width, 20);
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏!谢谢!
我正在设计一个自定义窗口边框,我在顶部放置一个位图作为拖动条.这是有效的,但是当我试图拖动窗口时,它将自己置于两个不同的区域,并在两者之间闪烁.这是一个视频:
http://dl.dropbox.com/u/85700751/capture-1.avi
当窗口闪烁时,我正试图拖动它(由于某种原因它没有显示我的光标).这是我的拖动代码:
case WM_LBUTTONDOWN: {
int posX = LOWORD(lParam);
int posY = HIWORD(lParam);
if((isDragging==false)&&(posX>4)&&(posX<470)&&(posY>4)&&(posY<24))
{
isDragging = true;
ClipCursor(rect);
oldCursorX = posX;
oldCursorY = posY;
}
}
break;
case WM_LBUTTONUP: {
isDragging = false;
ClipCursor(NULL);
}
break;
case WM_MOUSEMOVE: {
if(isDragging) {
SetWindowPos(hWnd, NULL, LOWORD(lParam)-oldCursorX, HIWORD(lParam)-oldCursorY, 500, 500, NULL);
}
}
break;
Run Code Online (Sandbox Code Playgroud) 我有一个介于0和1之间的浮点数,我用它来创建一个0到255之间的整数.我可以完成这个
integer = float * 255;
Run Code Online (Sandbox Code Playgroud)
如果我希望0为0而1为255,那么这可以正常工作,但是我希望它完全相反!我想它如果1可能是0和255可能是1.有没有办法做到这一点?
提前致谢!