-问题1 :Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1 >= 1
JTable中加入button等控件,在执行删除操作时,出现残留,之后再点击就会出现如上错误。
解决方法:原因是JTable还处于编辑状态,只需要在执行删除操作前取消JTable的编辑状态即可:jTable.removeEditor();
-问题2 :空指针异常
解决方法: 通常是没有实例化对象。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于写swing时的继承问题相关的知识,希望对你有一定的参考价值。
先看两个程序
/***********************************************************
程序1
**/
package com.bsl.soimport;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class Test
private Frame main = null;
public Test()
main = new Frame("click");
main.setBackground(Color.blue);
main.setSize(600, 800);
main.setVisible(true);
main.addMouseListener(new MouseProcess1());
main.addWindowListener(new WindowsProcess1());
/**
* @author Owner
* windows系统事件
*
*/
class WindowsProcess1 implements WindowListener
public void windowActivated(WindowEvent e)
public void windowClosed(WindowEvent e)
public void windowClosing(WindowEvent e)
System.exit(0);
public void windowDeactivated(WindowEvent e)
public void windowDeiconified(WindowEvent e)
public void windowIconified(WindowEvent e)
public void windowOpened(WindowEvent e)
/**
* @author Owner
* 鼠标事件
*
*/
class MouseProcess1 implements MouseListener
public void mouseClicked(MouseEvent e)
// TODO Auto-generated method stub
Object obj = e.getSource();
if (obj instanceof Frame && obj == main)
System.out.println("---------------");
Graphics g = main.getGraphics();
g.setColor(Color.red);
g.fillOval(e.getX(), e.getY(), 10, 10);
public void mouseEntered(MouseEvent e)
public void mouseExited(MouseEvent e)
public void mousePressed(MouseEvent e)
public void mouseReleased(MouseEvent e)
public static void main(String[] args)
Test test = new Test();
/***************************************
程序2
***/
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class MouseAdapter1
public static void main(String[] args)
new MyFrame("click...");
class MyFrame extends Frame
MyFrame(String name)
super(name);
setBackground(Color.blue);
setBounds(200,200,600,400);
setVisible(true);
addMouseListener(new MouseMonitor());
ArrayList<Point> al=new ArrayList();
// Iterator ii=al.iterator();
public void paint(Graphics g)
Iterator<Point> ii=al.iterator();
while(ii.hasNext())
Point p=ii.next();
g.setColor(Color.green);
g.fillOval(p.x,p.y,10,10);
void addPoint(Point p)
al.add(p);
class MouseMonitor extends MouseAdapter
public void mousePressed(MouseEvent e)
MyFrame mf=(MyFrame)e.getSource();
mf.addPoint(new Point(e.getX(),e.getY()));
mf.repaint();
public void mouseDragged(MouseEvent e)
MyFrame mf=(MyFrame)e.getSource();
问题,为什么好多人都是程序2的风格,在主类里面继承一个Frame,而不是像程序1里去new Frame
就我自己的感受,我很讨厌第二种写法,觉得比较混乱
-问题1 :Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1 >= 1
JTable中加入button等控件,在执行删除操作时,出现残留,之后再点击就会出现如上错误。
解决方法:原因是JTable还处于编辑状态,只需要在执行删除操作前取消JTable的编辑状态即可:jTable.removeEditor();
-问题2 :空指针异常
解决方法: 通常是没有实例化对象。
以上是关于关于写swing时的继承问题的主要内容,如果未能解决你的问题,请参考以下文章
2018-03-19面试之下面关于Java Swing的描述,说法错误的是?
关于在swing的两个JPanel钟一个事件监听器中修改了数组成员变量内容后,再在另一个事件监听器中获取数组成员变量的值发现仍然是初始化时的值没有获取到在另一个事件监听器对它的修改