netbean向导创建的桌面应用程序怎么重写paint,怎么调用repaint 用NETBEAN向导新建了一个桌面应用程序,但是不知道怎么调用paint()函数。repaint()函数是用this.getFrame().repaint()方式调用的,但貌似没调用我自己写的paint(),应该是没有重写成功,因为不是很了解FrameView,所以还望论坛里的前辈们帮我解答一下,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不知道netbean创建的程序是怎么样的,但是你创建的是桌面应用程序的话,应该有JFrame或者JPanel类的子类吧,你在这个类里重写就是,去查一查文档注意不要写错了 代码如下:public class PaintPadView extends FrameView {//继承FrameView .... public PaintPadView(SingleFrameApplication app) {//构造 .... } public void paint(Graphics g) {//重写paint() .... } public void update(Graphics g) { paint(g); } private void jPanel3MouseDragged(java.awt.event.MouseEvent evt) { .... this.getFrame().repaint();//调用repaint() }}paint()无法调用 public class PaintPadView extends FrameView { //0-画笔 1-橡皮 2-多边形 3-直线 4-圆 5-矩形 protected int toolFlag = 0; protected int x = -1; protected int y = -1; protected Vector paintInfo = new Vector(); protected Color c = new Color(0, 0, 0); protected BasicStroke size = new BasicStroke(con, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL); public PaintPadView(SingleFrameApplication app) { super(app); initComponents(); ResourceMap resourceMap = getResourceMap(); int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout"); messageTimer = new Timer(messageTimeout, new ActionListener() { public void actionPerformed(ActionEvent e) { statusMessageLabel.setText(""); } }); messageTimer.setRepeats(false); int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate"); for (int i = 0; i < busyIcons.length; i++) { busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]"); } busyIconTimer = new Timer(busyAnimationRate, new ActionListener() { public void actionPerformed(ActionEvent e) { busyIconIndex = (busyIconIndex + 1) % busyIcons.length; statusAnimationLabel.setIcon(busyIcons[busyIconIndex]); } }); idleIcon = resourceMap.getIcon("StatusBar.idleIcon"); statusAnimationLabel.setIcon(idleIcon); progressBar.setVisible(false); // connecting action tasks to status bar via TaskMonitor TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext()); taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() { public void propertyChange(java.beans.PropertyChangeEvent evt) { String propertyName = evt.getPropertyName(); if ("started".equals(propertyName)) { if (!busyIconTimer.isRunning()) { statusAnimationLabel.setIcon(busyIcons[0]); busyIconIndex = 0; busyIconTimer.start(); } progressBar.setVisible(true); progressBar.setIndeterminate(true); } else if ("done".equals(propertyName)) { busyIconTimer.stop(); statusAnimationLabel.setIcon(idleIcon); progressBar.setVisible(false); progressBar.setValue(0); } else if ("message".equals(propertyName)) { String text = (String) (evt.getNewValue()); statusMessageLabel.setText((text == null) ? "" : text); messageTimer.restart(); } else if ("progress".equals(propertyName)) { int value = (Integer) (evt.getNewValue()); progressBar.setVisible(true); progressBar.setIndeterminate(false); progressBar.setValue(value); } } }); } public void update(Graphics g) { System.out.println("In update"); paint(g); } public void paint(Graphics g) {//待完善 Graphics2D g2d = (Graphics2D) g; Point p1, p2; int n = paintInfo.size(); System.out.println("In paint"); for (int i = 0; i < n - 1; i++) { p1 = (Point) paintInfo.elementAt(i); p2 = (Point) paintInfo.elementAt(i + 1); size = new BasicStroke(p1.boarder, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL); g2d.setColor(p1.col); g2d.setStroke(size); if (p1.tool == p2.tool) { switch (p1.tool) { case 0:// 画笔 Line2D line1 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y); g2d.draw(line1); break; case 1:// 橡皮 g.clearRect(p1.x, p1.y, p1.boarder, p1.boarder); break; case 2://多边形 break; case 3:// 画直线 Line2D line2 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y); g2d.draw(line2); break; case 4:// 画圆 Ellipse2D ellipse = new Ellipse2D.Double(p1.x, p1.y, Math.abs(p2.x - p1.x), Math.abs(p2.y - p1.y)); g2d.draw(ellipse); break; case 5:// 画矩形 Rectangle2D rect = new Rectangle2D.Double(p1.x, p1.y, Math.abs(p2.x - p1.x), Math.abs(p2.y - p1.y)); g2d.draw(rect); break; default: }// end switch }// end if }// end for }private void jPanel3MousePressed(java.awt.event.MouseEvent evt) { Point p2; System.out.println("press" + toolFlag); switch (toolFlag) { case 3:// 直线 x = (int) evt.getX(); y = (int) evt.getY(); p2 = new Point(x, y, c, toolFlag, con); paintInfo.addElement(p2); break; case 4: // 圆 x = (int) evt.getX(); y = (int) evt.getY(); p2 = new Point(x, y, c, toolFlag, con); paintInfo.addElement(p2); break; case 5: // 矩形 x = (int) evt.getX(); y = (int) evt.getY(); p2 = new Point(x, y, c, toolFlag, con); paintInfo.addElement(p2); break; default: } } private void jPanel3MouseDragged(java.awt.event.MouseEvent evt) { Point p1; switch (toolFlag) { case 0:// 画笔 case 1:// 橡皮 System.out.println("drag" + toolFlag); x = (int) evt.getX(); y = (int) evt.getY(); p1 = new Point(x, y, c, toolFlag, con); paintInfo.addElement(p1); this.getFrame().repaint(); break; default: } }代码没贴完,太长了,选了主要的 import org.jdesktop.application.FrameView;FrameView 来自上面的包 怎么用frameview啊,貌似不是标准JDK里的东西,怎么repaint() 构造函数的作用? 有关Socket的两个问题 求一个JAVASCRIPT树 请问一下,编写java有那些编译器呀?? 对数据处理出错了,为什么会出现两条同样的记录 简直问题:关于unicode 这段代码怎么进行优化? 小弟新手上路,请大虾指教用什么工具比较好? static到底是如何使用的呢? 关于“嵌套”?进来看看吧 关于TreeSet的问题 一个键问题
桌面应用程序的话,应该有JFrame或者JPanel类的子类吧,
你在这个类里重写就是,去查一查文档注意不要写错了
public class PaintPadView extends FrameView {//继承FrameView
....
public PaintPadView(SingleFrameApplication app) {//构造
....
}
public void paint(Graphics g) {//重写paint()
....
}
public void update(Graphics g) {
paint(g);
}
private void jPanel3MouseDragged(java.awt.event.MouseEvent evt) {
....
this.getFrame().repaint();//调用repaint()
}
}
paint()无法调用
//0-画笔 1-橡皮 2-多边形 3-直线 4-圆 5-矩形
protected int toolFlag = 0;
protected int x = -1;
protected int y = -1;
protected Vector paintInfo = new Vector();
protected Color c = new Color(0, 0, 0);
protected BasicStroke size = new BasicStroke(con, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL);
public PaintPadView(SingleFrameApplication app) {
super(app);
initComponents();
ResourceMap resourceMap = getResourceMap();
int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout");
messageTimer = new Timer(messageTimeout, new ActionListener() { public void actionPerformed(ActionEvent e) {
statusMessageLabel.setText("");
}
});
messageTimer.setRepeats(false);
int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate");
for (int i = 0; i < busyIcons.length; i++) {
busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]");
}
busyIconTimer = new Timer(busyAnimationRate, new ActionListener() { public void actionPerformed(ActionEvent e) {
busyIconIndex = (busyIconIndex + 1) % busyIcons.length;
statusAnimationLabel.setIcon(busyIcons[busyIconIndex]);
}
});
idleIcon = resourceMap.getIcon("StatusBar.idleIcon");
statusAnimationLabel.setIcon(idleIcon);
progressBar.setVisible(false); // connecting action tasks to status bar via TaskMonitor
TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext());
taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() { public void propertyChange(java.beans.PropertyChangeEvent evt) {
String propertyName = evt.getPropertyName();
if ("started".equals(propertyName)) {
if (!busyIconTimer.isRunning()) {
statusAnimationLabel.setIcon(busyIcons[0]);
busyIconIndex = 0;
busyIconTimer.start();
}
progressBar.setVisible(true);
progressBar.setIndeterminate(true);
} else if ("done".equals(propertyName)) {
busyIconTimer.stop();
statusAnimationLabel.setIcon(idleIcon);
progressBar.setVisible(false);
progressBar.setValue(0);
} else if ("message".equals(propertyName)) {
String text = (String) (evt.getNewValue());
statusMessageLabel.setText((text == null) ? "" : text);
messageTimer.restart();
} else if ("progress".equals(propertyName)) {
int value = (Integer) (evt.getNewValue());
progressBar.setVisible(true);
progressBar.setIndeterminate(false);
progressBar.setValue(value);
}
}
});
} public void update(Graphics g) {
System.out.println("In update");
paint(g);
} public void paint(Graphics g) {//待完善
Graphics2D g2d = (Graphics2D) g;
Point p1, p2;
int n = paintInfo.size(); System.out.println("In paint");
for (int i = 0; i < n - 1; i++) {
p1 = (Point) paintInfo.elementAt(i);
p2 = (Point) paintInfo.elementAt(i + 1);
size = new BasicStroke(p1.boarder, BasicStroke.CAP_BUTT,
BasicStroke.JOIN_BEVEL); g2d.setColor(p1.col);
g2d.setStroke(size);
if (p1.tool == p2.tool) {
switch (p1.tool) {
case 0:// 画笔
Line2D line1 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y);
g2d.draw(line1);
break;
case 1:// 橡皮
g.clearRect(p1.x, p1.y, p1.boarder, p1.boarder);
break;
case 2://多边形
break;
case 3:// 画直线
Line2D line2 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y);
g2d.draw(line2);
break;
case 4:// 画圆
Ellipse2D ellipse = new Ellipse2D.Double(p1.x, p1.y, Math.abs(p2.x - p1.x), Math.abs(p2.y - p1.y));
g2d.draw(ellipse);
break;
case 5:// 画矩形
Rectangle2D rect = new Rectangle2D.Double(p1.x, p1.y, Math.abs(p2.x - p1.x), Math.abs(p2.y - p1.y));
g2d.draw(rect);
break;
default:
}// end switch
}// end if
}// end for
}
private void jPanel3MousePressed(java.awt.event.MouseEvent evt) {
Point p2;
System.out.println("press" + toolFlag);
switch (toolFlag) {
case 3:// 直线
x = (int) evt.getX();
y = (int) evt.getY();
p2 = new Point(x, y, c, toolFlag, con);
paintInfo.addElement(p2);
break;
case 4: // 圆
x = (int) evt.getX();
y = (int) evt.getY();
p2 = new Point(x, y, c, toolFlag, con);
paintInfo.addElement(p2);
break;
case 5: // 矩形
x = (int) evt.getX();
y = (int) evt.getY();
p2 = new Point(x, y, c, toolFlag, con);
paintInfo.addElement(p2);
break;
default:
}
} private void jPanel3MouseDragged(java.awt.event.MouseEvent evt) {
Point p1;
switch (toolFlag) {
case 0:// 画笔
case 1:// 橡皮
System.out.println("drag" + toolFlag);
x = (int) evt.getX();
y = (int) evt.getY();
p1 = new Point(x, y, c, toolFlag, con);
paintInfo.addElement(p1);
this.getFrame().repaint();
break;
default:
}
}
代码没贴完,太长了,选了主要的
FrameView 来自上面的包