java能实现自绘窗体吗

发布时间:2024-06-18 20:26 发布:上海旅游网

问题描述:

比如实现像“酷狗”那样的界面。
如果有java自绘窗体源代码例子,将有重分给予!

问题解答:

将系统默认的标题栏隐藏掉,然后利用JAVA2D自己绘制组件来充当标题栏,这个一定可行,我以前就做过模仿千千静听的界面。

可以使用JWindow 或者 是JFrame.setDefaultLookAndFeelDecorated(false),
能去掉最上面的标题栏,然后就只能自己加组件去处理。
还需要处理拖动

你应该搜索 java swing 用netbeans很容易就能做了这样的界面

import java.awt.*;
import java.awt.event.*;

public class Work {
public static void main(String[] args) {
TFrame t = new TFrame("TestKeyEvent");
}
}

class TFrame extends Frame {
static int x = 50;
static int y = 50;

enum Direction {
L, U, R, D, STOP
};

Direction dir = Direction.STOP;

TFrame(String s) {
super(s);
setLayout(null);
setBounds(400, 500, 200, 200);
addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
int keycode = e.getKeyCode();
if (keycode == KeyEvent.VK_UP) {
{
dir = Direction.U;
}
} else if (keycode == KeyEvent.VK_DOWN) {
dir = Direction.D;
} else if (keycode == KeyEvent.VK_LEFT) {
dir = Direction.L;
} else if (keycode == KeyEvent.VK_RIGHT) {
dir = Direction.R;
}
}
});
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});

setVisible(true);
}

public void paint(Graphics g) {
repaint();
g.setColor(Color.RED);
g.fillOval(x, y, 30, 30);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
switch(dir){
case U:
if(y>30)
y-=5;
break;
case D:
if(y<200-35)
y+=5;
break;
case L:
if(x>5)
x-=5;
break;
case R:
if(x<200-35)
x+=5;
break;
}

}
}

热点新闻