0

すべての詳細を忘れずに含めていただければ幸いです。

私はJavaで作業しており、メインウィンドウがJFrameである独自のインターフェイスを作成しています。背景は、ウィンドウにぴったり合う背景画像(JLabelとして)でJFrameに添付されています。次に、「開始」ボタンとして機能する背景 Jlabel に添付された画像があります。私の問題は、独自のクラス内で各ボタン機能を容易にするカスタム クラスを作成したいということです。

メインクラスにボタンに反応する関数を持たせる代わりに、バックグラウンドに追加できるクラスを作りたいと思います...これが私のコードです多分誰かが私に例を与えることができ、私は理解することができます残りは正しい方向に向けてください。

次のコードにはオリジナルが含まれています。Jlabel ボタンの独自のクラスにイベントリスナーをカプセル化するように変更する方法の例を提供してください。

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;



    public class pipboy{

    public static void main(String[] args){
    pipboy pipboy_os = new pipboy();
    pipboy_os.runmain();
}

public void runmain(){
    //Create and set up the window.
    JFrame frame = new JFrame("PIPBOY Research v0.0.03");

    //background
        ImageIcon background = new ImageIcon("UI/background/default.png");
        JLabel label=new JLabel(background);


    //radiation animated
    ImageIcon animated_loading = new ImageIcon("UI/icon/loading/loading.png");
    JLabel animated_icon = new JLabel(animated_loading);
    animated_icon.setSize(128, 128);
    animated_icon.setLocation(300, 125);

    //Buff arm guy icon
    ImageIcon icon_loading = new ImageIcon("UI/icon/34.png");
    JLabel icon = new JLabel(icon_loading);
    icon.setSize(128, 128);
    icon.setLocation(300, 50);


    label.add(icon);
    label.add(animated_icon);
    frame.add(label);

    //Display the window.
    frame.pack();
    frame.setVisible(true);

    //Full screen
     frame.setSize(800,480);
    frame.setExtendedState(Frame.MAXIMIZED_BOTH); 

    //Set default close operation for JFrame
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



    //This is the handler class i made but i want it in its own class with the buff arm icon picure so it can do something specific when the image is pressed
    HandlerClass handler = new HandlerClass();
    frame.addMouseListener(handler);
    frame.addMouseMotionListener(handler);
}

private static class HandlerClass implements MouseListener, MouseMotionListener{
    public void mouseClicked(MouseEvent event){
        System.out.println(String.format("Clicked at %d,%d", event.getX(), event.getY()));
    }

    public void mousePressed(MouseEvent event){

    }

    public void mouseReleased(MouseEvent event){

    }

    public void mouseEntered(MouseEvent event){

    }

    public void mouseExited(MouseEvent event){

    }

    public void mouseDragged(MouseEvent event){

    }

    public void mouseMoved(MouseEvent event){

    }
}

}

4

1 に答える 1

0

どうやらJavaでポリモーフィズムがどのように機能するかわかりませんでしたが、ここに私の解決策があります(一部の名前は変更されています)

import javax.swing.*;

class GUItests{
    public JFrame mainContainerFrame;

    public static void main(String[] args){
        GUItests mainController = new GUItests();
        mainController.startGUI();
    }

    public void startGUI(){
        mainContainerFrame = new JFrame("test Frame");

        mainContainerFrame.setSize(800,480);
        mainContainerFrame.pack();
        mainContainerFrame.setVisible(true);

        mainContainerFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JLabel customButtonVar = customButton();
        mainContainerFrame.getContentPane().add(customButtonVar);

    }


    public JLabel customButton(){
        JLabel icon = new JLabel("testing");
        icon.setSize(128, 128);
        icon.setLocation(300, 50);
        return icon;
    }

}
于 2012-06-08T20:07:15.697 に答える