解决方案 »
- JTable问题?
- 菜鸟提问 :这个图片怎么显示不出来,是哪里的问题,代码如下
- 怎么对oracle中的clob类型进行操作?
- Swing的简单问题,请大家帮我看看
- !请教!关于ResultSet的问题,请高手帮忙!
- 这个程序哪里错了,怎么解决呀?
- 开发工具JavaBeginner发布新版本了,比JCreator好用多了。。
- 如何在一个窗口的两个或两个以上的地方同时画图?
- 求口令加密源代码
- 菜鸟问题...怎样将做好的project打包成可执行文件,而不用非在jb中打开不可?
- Java程序运行时,数据的存储位置
- ArrayList实现了List接口,为什么没有重写其iterator();抽象方法???为什么
代码如下,依然是不行。import java.awt.Graphics;
import java.awt.event.*;
import javax.swing.*;public class E16_8 extends JFrame {
public static int xo=0;
public static int yo=0;
Display display=new Display();
E16_8(){
add(display);
display.addMouseListener(new Display());
} public static void main(String[] args) {
JFrame frame = new E16_8();
frame.setTitle("E16_8");
frame.setSize(300, 100);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}class Display extends JPanel implements MouseListener{
public void mouseClicked(MouseEvent e) {
E16_8.xo=e.getX();//查看语句是否执行的
E16_8.yo=e.getY();//查看用的
System.out.print("x:"+e.getX() +"y:"+e.getY()+" ");
repaint();/***********问题在此
为什么每次点击鼠标,上面的输出语句执行,获取鼠标点击位置也执行,
但是repaint()不执行,
是因为此处的repaint()不能调用Display中的paintComponent()吗*/
}
public void mouseEntered(MouseEvent arg0) {
} public void mouseExited(MouseEvent arg0) {
} public void mousePressed(MouseEvent arg0) {
} public void mouseReleased(MouseEvent arg0) {
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.drawString("hi", E16_8.xo, 30);
}
}
add(display);
display.addMouseListener(display);
}
改成这样就可以了
代码如下import java.awt.Graphics;
import java.awt.event.*;
import javax.swing.*;public class E16_8 extends JFrame {
public static int xo=0;
public static int yo=0;
Display display=new Display();
E16_8(){
add(display);
display.addMouseListener(new MouseClick());
} public static void main(String[] args) {
JFrame frame = new E16_8();
frame.setTitle("E16_8");
frame.setSize(300, 100);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
class Display extends JPanel{
protected void paintComponent(Graphics g){
g.drawString("hi", E16_8.xo, 30);
}
}class MouseClick implements MouseListener {
public void mouseClicked(MouseEvent e) {
E16_8.xo=e.getX();//查看语句是否执行的
E16_8.yo=e.getY();//查看用的
System.out.print("x:"+e.getX() +"y:"+e.getY()+" ");
display.repaint();/***********问题在此
为什么每次点击鼠标,上面的输出语句执行,获取鼠标点击位置也执行,
但是repaint()不执行,
是因为此处的repaint()不能调用Display中的paintComponent()吗*/
}
public void mouseEntered(MouseEvent arg0) {
} public void mouseExited(MouseEvent arg0) {
} public void mousePressed(MouseEvent arg0) {
} public void mouseReleased(MouseEvent arg0) {
}
}
}
试了一下 可以显示,也是新手,仅供参考。
创建了两个panel,MouseEvent响应的没有添加到框架里那个panel,所有repaint没有
其实把这一个行
class Display extends JPanel implements MouseListener{
改成
class Display extends Display implements MouseListener{
然后主类中改成
MouseClick mouseClick=new MouseClick();
E16_8(){
add(mouseClick);
mouseClick.addMouseListener(mouseClick);
}
就OK了import java.awt.Graphics;
import java.awt.event.*;
import javax.swing.*;public class E16_8 extends JFrame {
public static int xo=0;
public static int yo=0;
MouseClick mouseClick=new MouseClick();
E16_8(){
add(mouseClick);
mouseClick.addMouseListener(mouseClick);
} public static void main(String[] args) {
JFrame frame = new E16_8();
frame.setTitle("E16_8");
frame.setSize(300, 100);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}class Display extends JPanel{
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.drawString("hi", E16_8.xo, 30);
}
}class MouseClick extends Display implements MouseListener {
public void mouseClicked(MouseEvent e) {
E16_8.xo=e.getX();//查看语句是否执行的
E16_8.yo=e.getY();//查看用的
System.out.print("x:"+e.getX() +"y:"+e.getY()+" ");
repaint();/***********问题在此
为什么每次点击鼠标,上面的输出语句执行,获取鼠标点击位置也执行,
但是repaint()不执行,
是因为此处的repaint()不能调用Display中的paintComponent()吗*/
}
public void mouseEntered(MouseEvent arg0) {
} public void mouseExited(MouseEvent arg0) {
} public void mousePressed(MouseEvent arg0) {
} public void mouseReleased(MouseEvent arg0) {
}
}2楼code问题:
就按这个处理或者这整成内部类,像这样