package topic1;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Test extends javax.swing.JFrame{
private Graphics2D pt = null;
public Test() {
Init();
pt = (Graphics2D)this.getGraphics();
pt.setColor(Color.BLUE);
}
public void Init(){
this.setSize(2000,2000);
this.setVisible(true);
this.setTitle("演示:");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addMouseListener(new MyMouseAdapter(this));
}
public static void main(String[] args){
Test mb = new Test();
}
public void MyMousePressed(MouseEvent e) {
String distance = "0";
int d = 0;
System.out.println("out");
if(e.isMetaDown()){
distance = JOptionPane.showInputDialog(null,"请输入:","输入值:",JOptionPane.QUESTION_MESSAGE);
try{d = Integer.parseInt(distance);}
catch (NumberFormatException e1){ d=0;}
pt.drawLine(300+d,300+2*d,500+d,500+2*d);
}else{
pt.drawLine(900,400,400,500);
}
}
}
class MyMouseAdapter extends MouseAdapter {
private Test adaptee;
MyMouseAdapter(Test adaptee) {
this.adaptee = adaptee;
} public void mousePressed(MouseEvent e) {
adaptee.MyMousePressed(e);
}
}问题是:
当点击JOptionPane.showInputDialog的确定的按钮的时候,会把原来的一条线的部分给覆盖掉,而且即使对话框不出现在线的上面,若吧对话框移动到他的上面,也会覆盖掉,移走对话框不会恢复???请教各位大侠如何解决???
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Test extends javax.swing.JFrame{
private Graphics2D pt = null;
public Test() {
Init();
pt = (Graphics2D)this.getGraphics();
pt.setColor(Color.BLUE);
}
public void Init(){
this.setSize(2000,2000);
this.setVisible(true);
this.setTitle("演示:");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addMouseListener(new MyMouseAdapter(this));
}
public static void main(String[] args){
Test mb = new Test();
}
public void MyMousePressed(MouseEvent e) {
String distance = "0";
int d = 0;
System.out.println("out");
if(e.isMetaDown()){
distance = JOptionPane.showInputDialog(null,"请输入:","输入值:",JOptionPane.QUESTION_MESSAGE);
try{d = Integer.parseInt(distance);}
catch (NumberFormatException e1){ d=0;}
pt.drawLine(300+d,300+2*d,500+d,500+2*d);
}else{
pt.drawLine(900,400,400,500);
}
}
}
class MyMouseAdapter extends MouseAdapter {
private Test adaptee;
MyMouseAdapter(Test adaptee) {
this.adaptee = adaptee;
} public void mousePressed(MouseEvent e) {
adaptee.MyMousePressed(e);
}
}问题是:
当点击JOptionPane.showInputDialog的确定的按钮的时候,会把原来的一条线的部分给覆盖掉,而且即使对话框不出现在线的上面,若吧对话框移动到他的上面,也会覆盖掉,移走对话框不会恢复???请教各位大侠如何解决???
解决方案 »
- 关于ActiveMQ
- 有关 jxl的问题,求高手解答
- util包中的date与sql中的date有什么区别?
- hibernate mapping时的问题:An internal error occurred during: "Generating Artifacts".Could not get list
- JLabel放背景图片??
- SKTETEK公司的915M的ID 读卡器(M9的).java 怎么样去使用
- Java HashMap中的一个奇怪内部类,有人研究过吗?
- 一个servlet错误 Can't find bundle for base name LocalStrings, locale zh_CN
- 难道真没人能解决吗?!
- 想和CSDN上各位大侠讨论一下关于UTF-8编码转化的问题.
- b/s 结构设计
- 请问如何用java读取c++ 下__time32_t类型的时间
而你这样,试图本身根本不知道画上去的那个对象,也就没有保留。
而且视图经常会调用刷新方法,当然不是全部刷新,而是局部。也正是因为是局部刷,所以你所挡住的那部分不可见。否则,整个视图上面将空空的什么都没有。不信你可以强制调用一下getContentPane().repaint();什么都没有,视图既然不保留这些,所以重新绘制的时候自然也不知道去画你要的东西。给你提供一种做法,这是常规做法。package frame.test;import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;public class Test extends javax.swing.JFrame {
// private Graphics2D pt = null;
MyPanel panel = new MyPanel(); public Test() {
Init();
// pt = (Graphics2D) getContentPane().getGraphics();
// pt.setColor(Color.BLUE);
} public void Init() {
setContentPane(panel);
this.setSize(2000, 2000);
this.setVisible(true);
this.setTitle("演示:");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addMouseListener(new MyMouseAdapter(this));
} public static void main(String[] args) {
Test mb = new Test();
} public void MyMousePressed(MouseEvent e) {
String distance = "0";
int d = 0;
System.out.println("out");
if (e.isMetaDown()) {
distance = JOptionPane.showInputDialog(null, "请输入:", "输入值:",
JOptionPane.QUESTION_MESSAGE);
try {
d = Integer.parseInt(distance);
} catch (NumberFormatException e1) {
d = 0;
} // pt.drawLine(300 + d, 300 + 2 * d, 500 + d, 500 + 2 * d);
panel.setD(d);
} else {
panel.setD(-1);
}
panel.repaint();
}
}class MyMouseAdapter extends MouseAdapter {
private Test adaptee; MyMouseAdapter(Test adaptee) {
this.adaptee = adaptee;
} public void mousePressed(MouseEvent e) {
adaptee.MyMousePressed(e);
}
}class MyPanel extends JPanel {
int d = -1; public void setD(int d) {
this.d = d;
} @Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);
if (d >= 0) {
g.drawLine(300 + d, 300 + 2 * d, 500 + d, 500 + 2 * d); } else {
g.drawLine(900, 400, 400, 500);
}
}
}