博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
swing 学习笔记六(对话框Dialog )
阅读量:4880 次
发布时间:2019-06-11

本文共 2773 字,大约阅读时间需要 9 分钟。

/**
 * 对话框
 * 
 * @time 11:09:20 AM
 * @author retacn yue
 * @Email zhenhuayue@sina.com
 */
public class Test_Dialog extends Frame {
private static final long serialVersionUID = 1L;
TextField rows = new TextField("3");
TextField cols = new TextField("3");
/**
* 构造器
* @param owner
*/
public Test_Dialog() {
setTitle("Dialog Test");
// 实例化面板
Panel panel = new Panel();
panel.setLayout(new GridLayout(2, 2));
panel.add(new Label("Row", Label.CENTER));
panel.add(rows);
panel.add(new Label("Columns", Label.CENTER));
panel.add(cols);
// 将面板添加到帧窗口
add("North", panel);
add("South", new Button("GO"));
}
public boolean handleEvent(Event event) {
if (event.id == Event.WINDOW_DESTROY) {
System.exit(0);
} else {
return super.handleEvent(event);
}
return true;
}
public boolean action(Event event, Object object) {
if (object.equals("GO")) {
// 弹绘制差图对话框
Dialog dialog = new TestDialog(this, Integer.parseInt(rows.getText()), Integer.parseInt(cols.getText()));
dialog.show();
} else {
return super.action(event, object);
}
return true;
}
public static void main(String[] args) {
Test_Dialog dialog = new Test_Dialog();
dialog.resize(200, 100);
dialog.show();
}
}
/**
 * 自定义对话框
 */
class TestDialog extends Dialog {
private static final long serialVersionUID = 1L;
static final int BLANK = 0;
static final int XX = 1;
static final int OO = 2;
int turn = XX;
public TestDialog(Frame frame, int w, int h) {
super(frame, "", false);
setLayout(new GridLayout(w, h));
// 添加自定义按钮
for (int i = 0; i < w * h; i++) {
add(new TestButton(this));
resize(w * 50, h * 50);
}
}
@Override
public boolean handleEvent(Event evt) {
if (evt.id == Event.WINDOW_DESTROY) {
dispose();
} else {
return super.handleEvent(evt);
}
return true;
}
}
/**
 * 自定义按钮
 */
class TestButton extends Canvas {
private static final long serialVersionUID = 1L;
int state = TestDialog.BLANK;
TestDialog parentDialog;
/**
* 构造器
*/
TestButton(TestDialog parent) {
this.parentDialog = parent;
}
@Override
public void paint(Graphics g) {
int x1 = 0;
int y1 = 0;
int x2 = size().width - 1;
int y2 = size().height - 1;
// 画矩形
g.drawRect(x1, y1, x2, y2);
x1 = x2 / 4;
y1 = y2 / 4;
int wide = x2 / 2;
int high = y2 / 2;
// 画差
if (state == TestDialog.XX) {
g.drawLine(x1, y1, x1 + wide, y1 + high);
g.drawLine(x1, y1 + high, x1 + wide, y1);
}
// 画圈
if (state == TestDialog.OO) {
g.drawOval(x1, y1, x1 + wide / 2, y1 + high / 2);
}
}
// 按下画圈或是画差
@Override
public boolean mouseDown(Event evt, int x, int y) {
if (state == TestDialog.BLANK) {
// 
state = parentDialog.turn;
parentDialog.turn = (parentDialog.turn == TestDialog.XX ? TestDialog.OO : TestDialog.XX);
} else {
state = (state == TestDialog.XX ? TestDialog.OO : TestDialog.XX);
}
// 重绘
repaint();
return true;
}
}

转载于:https://www.cnblogs.com/retacn-yue/archive/2012/09/06/2761321.html

你可能感兴趣的文章
TreeView 无刷新展开与收缩
查看>>
浏览器端读取和生成zip文件
查看>>
python数据结构链表之单向链表
查看>>
python 十进制数转二进制数
查看>>
install ros-indigo-tf2
查看>>
c++ 实现等待5s
查看>>
字符串练习
查看>>
关键路径
查看>>
前八后十六节奏
查看>>
线程、进程和协程(一)
查看>>
linux 并发 RCU
查看>>
mysql 线程池
查看>>
微信公众号网页授权获取用户基本信息
查看>>
URL
查看>>
排序算法-冒泡排序
查看>>
菜单栏始终浮动在顶部 js
查看>>
json序列化后的是字符串,不是二进制。是字符串!!!确定不是二进制!!!...
查看>>
python 快速排序
查看>>
JMeter【第四篇】参数化
查看>>
EasyUI设置复选框单选操作
查看>>