饭店开张宣传语:高分,一个关于JAVA数组的问题!!

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 04:03:27
我定义了一个JPanel数组,并为每个元素注册了鼠标事件监听,用e.getSource()获得发生鼠标事件的元素,请问,如何获得该元素在数组中的下标值????

 
 
 
Java 里的任何数组元素都不带有本身的“住址”(下标值),就像我们(一丝不挂的)身上不带有家里的地址。
我觉得解决你这道题最直接的方法是把下标值存放在每一个元素里(设成名字):
存值调用 setName( ),取值调用 getName( )。

示范如下:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class C extends JFrame {

    public C( ) {
        setTitle( "以下的格子都是监听点击事件的 JPanel 数组元素" );
        getContentPane( ).setLayout( new FlowLayout( ) );

        JPanel[ ] pa = new JPanel[ 30 ];
        for( int i = 0; i < pa.length; ++i ) {
            JPanel p = new JPanel( );
            p.setName( i + "" ); // 存值
            p.setBorder( BorderFactory.createEtchedBorder( ) );

            p.addMouseListener( new MouseAdapter( ) {
                public void mouseClicked( MouseEvent e ) {
                    JOptionPane.showMessageDialog(
                        C.this,
                        "下标值是 " + ( ( JPanel ) e.getSource( ) ).getName( ) ); // 取值
                }
            } );

            getContentPane( ).add( pa[ i ] = p );
        }

        pack( );
        setLocation( 200, 200 );
        setDefaultCloseOperation( EXIT_ON_CLOSE );
        setVisible( true );
    }

    public static void main( String[ ] args ) { new C( ); }
}
 
 
 

我的方法: 进行比较 !

public void 事件方法(事件源 e){
Object sourcePanel = e.getSource();
int index = 0;//JPanel数组的下标

for(i=0;i<jPanel.length;i++){
if(sourcePanel == jPanel[i]){index = i;}
}

}

int indexOfJPanel(JPanel[] JPanels, JPanel target){
for (int i=0; i<JPanels.length; i++){
if (JPanels[i] == target){return i;}
}

return -1; // not found
}

idx = indexOfJPanel(yourJPanels[], e.getSource());

很遗憾,无法获取,我曾经尝试过也问过同事,所以可以确定无法获取