Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何扩展Java';s SWT标签?_Java_User Interface_Swt - Fatal编程技术网

如何扩展Java';s SWT标签?

如何扩展Java';s SWT标签?,java,user-interface,swt,Java,User Interface,Swt,我想扩展java SWT标签对象,但发现它是不允许的。 因此,我创建了一个包含Label对象的类“MyLabel”。 它看起来像这样: public class MyLabel { Label label; //more instance variables here... public MyLabel(Composite parent, int type) { label=new Label(parent,type); //more

我想扩展java SWT标签对象,但发现它是不允许的。
因此,我创建了一个包含Label对象的类“MyLabel”。
它看起来像这样:

public class MyLabel {

    Label label;

    //more instance variables here...

    public MyLabel(Composite parent, int type) {
        label=new Label(parent,type);
        //more initialization here...
    }

    public void setText(String label_text) {
        label.setText(label_text);
    }

    public void setImage(Image label_image) {
        label.setImage(label_image);
    }

    public void addMouseListener(MouseListener board_listener) {
        label.addMouseListener(board_listener);
    }

    public void removeMouseListener(MouseListener board_listener) {
        label.removeMouseListener(board_listener);
    }

    //more staff here...
}
它在一段时间内运行良好,直到我开始聆听事件,并意识到:

public class SWTTest {

    public static void main(String[] args) {

        Display display=new Display();
        Shell shell=new Shell(display);
        shell.setLayout(new RowLayout());


        MyLabel my_label=new MyLabel(shell, SWT.SHADOW_OUT);
        my_label.setText("this is my label");

        my_label.addMouseListener(new MouseAdapter() {

            @Override
            public void mouseUp(MouseEvent e) {
                e.getSource(); //returns the Label object instead of MyLabel object...
            }

        });

        shell.pack();
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) 
                display.sleep();
        }
    }
}
这看起来还不错,但我有几个MyLabel对象,我需要知道鼠标点击MyLabel的来源。
这种情况有什么解决办法吗

**编辑


我正在尝试创建自己的标签。更具体地说,我想要一个标签,其中包含一个加法字段X,以及一个getX()和setX(X_var)

**编辑2

好的,我会更具体一点:
我有一个棋盘,上面有64个标签,按8x8网格排列,每个标签代表棋盘上的一个位置。
现在,我试图实现的是,无论何时点击电路板上的64个位置中的一个,我都会知道它被点击的位置,根据x和y电路板坐标
所以,我想扩展标签,并向其添加位置实例变量。(Position是一个包含x和y字段的类)。
现在,无论何时单击其中一个标签,我都可以从“mouseUp(MouseEvent e)”方法中调用“getPoint()”方法,并知道单击了板上的哪个位置


希望它现在更清楚,并为含糊不清感到抱歉

您可以使用
Label
setData
方法保存对类的引用

因此,在创建标签时,请使用:

label.setData(myLabel);
在鼠标事件中,您可以使用

MyLabel myLabel = (MyLabel)((Widget)e.getSource()).getData();

您可以使用
Label
setData
方法保存对类的引用

因此,在创建标签时,请使用:

label.setData(myLabel);
在鼠标事件中,您可以使用

MyLabel myLabel = (MyLabel)((Widget)e.getSource()).getData();

您可以使用
Label
setData
方法保存对类的引用

因此,在创建标签时,请使用:

label.setData(myLabel);
在鼠标事件中,您可以使用

MyLabel myLabel = (MyLabel)((Widget)e.getSource()).getData();

您可以使用
Label
setData
方法保存对类的引用

因此,在创建标签时,请使用:

label.setData(myLabel);
在鼠标事件中,您可以使用

MyLabel myLabel = (MyLabel)((Widget)e.getSource()).getData();


你想达到什么目的?可能有一种更为惯用和可靠的方法。我正在尝试创建自己的标签。更具体地说,我想要一个标签,里面有一个附加字段X,还有一个getX()和setX(X X_var)。这个附加字段是用来做什么的?我编辑了主帖。好的。在这种情况下,
Label
似乎是错误的超类来表示象棋方块;毕竟,标签的本质是它是一个不可编辑的文本字符串。我不熟悉SWT的内部结构,但如果这是Swing,我会创建
JComponent
的子类;看看SWT的等效基本小部件类。您想要实现什么?可能有一种更为惯用和可靠的方法。我正在尝试创建自己的标签。更具体地说,我想要一个标签,里面有一个附加字段X,还有一个getX()和setX(X X_var)。这个附加字段是用来做什么的?我编辑了主帖。好的。在这种情况下,
Label
似乎是错误的超类来表示象棋方块;毕竟,标签的本质是它是一个不可编辑的文本字符串。我不熟悉SWT的内部结构,但如果这是Swing,我会创建
JComponent
的子类;看看SWT的等效基本小部件类。您想要实现什么?可能有一种更为惯用和可靠的方法。我正在尝试创建自己的标签。更具体地说,我想要一个标签,里面有一个附加字段X,还有一个getX()和setX(X X_var)。这个附加字段是用来做什么的?我编辑了主帖。好的。在这种情况下,
Label
似乎是错误的超类来表示象棋方块;毕竟,标签的本质是它是一个不可编辑的文本字符串。我不熟悉SWT的内部结构,但如果这是Swing,我会创建
JComponent
的子类;看看SWT的等效基本小部件类。您想要实现什么?可能有一种更为惯用和可靠的方法。我正在尝试创建自己的标签。更具体地说,我想要一个标签,里面有一个附加字段X,还有一个getX()和setX(X X_var)。这个附加字段是用来做什么的?我编辑了主帖。好的。在这种情况下,
Label
似乎是错误的超类来表示象棋方块;毕竟,标签的本质是它是一个不可编辑的文本字符串。我不熟悉SWT的内部结构,但如果这是Swing,我会创建
JComponent
的子类;看看SWT的等效基部件类。这太棒了!我对你感激不尽,我的朋友!这太棒了!我对你感激不尽,我的朋友!这太棒了!我对你感激不尽,我的朋友!这太棒了!我对你感激不尽,我的朋友!