图片点击触发显示

REPORT ZDEMO_PICTURE_CONTROL.

* Declarations *****************************************************

CLASS C_REACTION DEFINITION.
  PUBLIC SECTION.
    METHODS H1 FOR EVENT PICTURE_CLICK OF CL_GUI_PICTURE.
ENDCLASS.                    "c_reaction DEFINITION

*---------------------------------------------------------------------*
*       CLASS c_service DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS C_SERVICE DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS  GET_PIC_TAB IMPORTING MIME_URL TYPE CSEQUENCE
                               EXPORTING PIC_TAB TYPE STANDARD TABLE.
ENDCLASS.                    "c_service DEFINITION


DATA: CONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
      CONTAINER2 LIKE CONTAINER1,
      PICT1 TYPE REF TO CL_GUI_PICTURE,
      PICT2 LIKE PICT1,
      REACT TYPE REF TO C_REACTION,
      EVT_TAB TYPE CNTL_SIMPLE_EVENTS,
      EVT_TAB_LINE LIKE LINE OF EVT_TAB,
      URL(256TYPE C.

TYPES PIC_LINE(1022TYPE X.
DATA  PIC_TAB TYPE TABLE OF PIC_LINE.

DATA L_ALIGNMENT TYPE I.

* Reporting events ***************************************************

START-OF-SELECTION.

  C_SERVICE=>GET_PIC_TAB(
    EXPORTING MIME_URL = '/SAP/BC/fp/graphics/FPsamples/Tatze.bmp'
    IMPORTING PIC_TAB  = PIC_TAB ).

  CALL FUNCTION 'DP_CREATE_URL'
    EXPORTING
      TYPE    = 'IMAGE'
      SUBTYPE = 'GIF'
    TABLES
      DATA    = PIC_TAB
    CHANGING
      URL     = URL.

  CALL SCREEN 100.

* Dialog Modules Output

MODULE STATUS_0100 OUTPUT.

  CREATE OBJECT: CONTAINER1 EXPORTING CONTAINER_NAME = 'PICTURE1',
                 CONTAINER2 EXPORTING CONTAINER_NAME = 'PICTURE2',
                 PICT1 EXPORTING PARENT = CONTAINER1,
                 PICT2 EXPORTING PARENT = CONTAINER2,
                 REACT.

  L_ALIGNMENT = CL_GUI_CONTROL=>ALIGN_AT_LEFT   +
                CL_GUI_CONTROL=>ALIGN_AT_RIGHT  +
                CL_GUI_CONTROL=>ALIGN_AT_TOP    +
                CL_GUI_CONTROL=>ALIGN_AT_BOTTOM.

  CALL METHOD PICT1->SET_ALIGNMENT
    EXPORTING
      ALIGNMENT = L_ALIGNMENT.

  CALL METHOD PICT1->SET_3D_BORDER
    EXPORTING
      BORDER = 1.

  EVT_TAB_LINE-EVENTID = CL_GUI_PICTURE=>EVENTID_PICTURE_CLICK.
  EVT_TAB_LINE-APPL_EVENT = ' '.       " System Event!
  APPEND EVT_TAB_LINE TO EVT_TAB.

  CALL METHOD PICT1->SET_REGISTERED_EVENTS
    EXPORTING
      EVENTS = EVT_TAB.

  SET HANDLER REACT->H1 FOR PICT1.
  CALL METHOD PICT1->LOAD_PICTURE_FROM_URL
    EXPORTING
      URL    = URL
    EXCEPTIONS
      OTHERS = 4.

  SET PF-STATUS 'SCREEN_100'.

ENDMODULE.                    "status_0100 OUTPUT

* Dialog Modules Output

MODULE CANCEL INPUT.
  LEAVE PROGRAM.
ENDMODULE.                    "cancel INPUT

* CLass Implementations **********************************************

CLASS C_REACTION IMPLEMENTATION.
  METHOD H1.

    C_SERVICE=>GET_PIC_TAB(
      EXPORTING MIME_URL = '/SAP/BC/fp/graphics/FPsamples/eumel.bmp'
      IMPORTING PIC_TAB  = PIC_TAB ).

    CALL FUNCTION 'DP_CREATE_URL'
      EXPORTING
        TYPE    = 'IMAGE'
        SUBTYPE = 'GIF'
      TABLES
        DATA    = PIC_TAB
      CHANGING
        URL     = URL.
    CALL METHOD PICT2->LOAD_PICTURE_FROM_URL
      EXPORTING
        URL = URL.
  ENDMETHOD.                    "h1
ENDCLASS.                    "c_reaction IMPLEMENTATION

*

CLASS C_SERVICE IMPLEMENTATION.
  METHOD GET_PIC_TAB.
    DATA PIC_WA TYPE XSTRING.
    DATA LENGTH TYPE I.
    DATA MIME_API TYPE REF TO IF_MR_API.

    MIME_API = CL_MIME_REPOSITORY_API=>GET_API( ).


    MIME_API->GET( EXPORTING I_URL = MIME_URL
                   IMPORTING E_CONTENT = PIC_WA
                   EXCEPTIONS OTHERS = 4 ).

    IF SY-SUBRC = 4.
      RETURN.
    ENDIF.

    CLEAR PIC_TAB.

    LENGTH = XSTRLEN( PIC_WA ).

    WHILE LENGTH >= 1022.
      APPEND PIC_WA(1022TO PIC_TAB.
      SHIFT PIC_WA BY 1022 PLACES LEFT IN BYTE MODE.
      LENGTH = XSTRLEN( PIC_WA ).
    ENDWHILE.

    IF LENGTH > 0.
      APPEND PIC_WA TO PIC_TAB.
    ENDIF.

  ENDMETHOD.                    "get_pic_tab
ENDCLASS.                    "c_service IMPLEMENTATION
在Java中,你可以使用图形用户界面(GUI)框架来实现点击图片触发事件的功能。以下是一个简单的示例代码,演示了如何在Java Swing中实现此功能: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ImageClickExample { public static void main(String[] args) { JFrame frame = new JFrame("Image Click Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ImageIcon imageIcon = new ImageIcon("path/to/your/image.jpg"); JLabel imageLabel = new JLabel(imageIcon); imageLabel.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { // 在这里添加点击事件的处理逻辑 System.out.println("图片点击了"); } }); frame.getContentPane().add(imageLabel, BorderLayout.CENTER); frame.setSize(400, 300); frame.setVisible(true); } } ``` 在上面的代码中,首先创建一个JFrame对象作为窗口容器。然后,使用ImageIcon类加载并设置要显示图片。接下来,创建一个JLabel对象,并将加载的图片设置为其图标。然后,为JLabel对象添加一个MouseListener,重写mouseClicked方法,在其中实现点击事件的逻辑。最后,将JLabel对象添加到JFrame的内容面板中,并设置窗口大小和可见性。 请注意,你需要将代码中的"path/to/your/image.jpg"替换为你自己的图片路径。此外,你可以根据需要自定义窗口的大小和其他外观属性。 希望这个示例能帮助到你!如果需要进一步的帮助,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SAP剑客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值