java如何实现填充算法
import javax.swing.JFrame;
public class EdgeFill {
public static void main(String args[]) {
// A(3,3)B(6,20)C(15,18)D(20,3)
// AB BD AC CD
new EdgeFill();
}
private TwoDimen env;
public EdgeFill() {
JFrame frame = new JFrame();
env = new TwoDimen();
frame.getContentPane().add(env);
frame.setBounds(100, 100, 600, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setVisible(true);
int[] x = new int[] { 3, 6, 20, 15 };
int[] y = new int[] { 3, 20, 3, 18 };
for (int i = 0; i < x.length; i++) {
if (i < x.length - 1)
edgeFillOnce(x[i], y[i], x[i + 1], y[i + 1]);
else
edgeFillOnce(x[i], y[i], x[0], y[0]);
}
}
private void edgeFillOnce(int x1, int y1, int x2, int y2) {
int k, i, j;
float x, y, dx, dy;
k = Math.abs(x2 - x1);
if (Math.abs(y2 - y1) > k) {
k = Math.abs(y2 - y1);
}
dx = (float) (x2 - x1) / k;
dy = (float) (y2 - y1) / k;
x = (float) x1;
y = (float) y1;
for (i = 0; i < k+1; i++) {
// env.drawPoint((int)(x+0.5), (int)(y+0.5));
for (j = (int)
swing的事件处理机制
Swing的事件处理机制是一种基于事件监听器的模型,它允许组件在某些事件发生时执行某些操作。当一个事件发生时,Swing会创建一个事件对象,然后将它传递给事件监听器。
监听器可以是预定义的,也可以是用户自定义的,它们会根据事件类型执行相应的操作。Swing支持多种类型的事件,包括鼠标事件、键盘事件、焦点事件等。通常,事件监听器会注册到组件上,当事件发生时,组件会通知监听器执行相应的操作。
这种事件驱动的机制使得Swing应用程序可以响应用户的交互行为,并且具有良好的扩展性和灵活性。