使用Java GUI将事件处理程序插入到映像中

时间:2016-01-22 17:17:22

标签: java swing awt actionlistener

我想插入图像,然后想要使用Java GUI向此图像添加事件。我添加图像,然后尝试将其插入此容器,但它显示错误。你能否告诉我哪种是用Java插入图像然后在这个图像或事件处理程序中添加一个监听器的正确方法?或者,如果使用容器来处理图像是正确的方法。我该怎么办?

这是我的代码:

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

public class Back extends JFrame { 
    private Container pane;
    public Back() {
        super("title");
        setLayout(null);

        Icon i=new ImageIcon(getClass().getResource("1.png"));
        pane=new Container();

        thehandler hand=new thehandler(); //konstruktori i handler merr 
                                          //nje instance te Background
    }

    private class thehandler implements ActionListener {
        public void actionPerformed(ActionEvent event) {

        }
    }

    public static void main(String[] args) {
        Back  d = new Back() ;

        d.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        d.getContentPane().setBackground(Color.GREEN);
        d.setSize(700,500);

        d.setVisible(true); 
    }
}

1 个答案:

答案 0 :(得分:1)

以下是使用JButton

制作可点击按钮的示例
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class GUITemplate {
    JFrame myMainWindow = new JFrame("Title");
    JPanel  firstPanel = new JPanel();

    private void runGUI() {
        myMainWindow.setBounds(10, 10, 400, 400);
        myMainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        myMainWindow.setLayout(new GridLayout(1,1));
        createFirstPanel();
        myMainWindow.getContentPane().add(firstPanel);
        myMainWindow.setVisible(true);
    }

    private void createFirstPanel() {
        firstPanel.setLayout(new FlowLayout());

        ImageIcon image1 = new ImageIcon("YourImage.ImageFileType");
        Image image2 = image1.getImage().getScaledInstance(300,300,0);
        ImageIcon image3 = new ImageIcon(image2);

        JButton jB = new JButton(image3);
        jB.addActionListener(new TheHandler());
        firstPanel.add(jB);
    }

    private class TheHandler implements ActionListener { //Changed thehandler to TheHandler
        public void actionPerformed(ActionEvent event) { //because it is a class
            //Do Something
        }
    }

    public static void main(String[] args) {
        GUITemplate gt = new GUITemplate();
        gt.runGUI();
    }
}