0

私は自分の問題の解決策を何時間も探していました。私はJava言語でプログラミングを始めたばかりで、すでに6つのカスタムボタンを含むカスタムパネルを作成できましたが、今はどのボタンを検出できるかを検出できるイベントを作成する必要があります押された、私はこれを C# で行いましたが、Java で方法を見つけることができません。

このコードは C# ですが、もちろん Java にも同様のものが必要です。

/// <summary>
/// Enumerator with buttons states
/// </summary>
public enum EstadoBoton
{
    Aceptar = 1,
    Nuevo = 2,
    Editar = 3,
    Cancelar = 4,
    Eliminar = 5,
    Imprimir = 6,
    Salir = 7
}
/// <summary>
/// Delegate method for buttons events
/// </summary>
/// <param name="edoBoton"></param>
public delegate void BotonPresionado(EstadoBoton edoBoton);

public partial class ctrlBotones : UserControl
{
    /// <summary>
    /// here I keep the state of the button
    /// </summary>
    private EstadoBoton estadoBoton;
    /// <summary>
    /// Event that manages the state of the button
    /// </summary>
    public event BotonPresionado BotonPresionado
    {
        add { this.botonpresion += value; }
        remove { this.botonpresion -= value; }
    }
    private BotonPresionado botonpresion;
    public ctrlBotones()
    {
        InitializeComponent();
    }

この例では、ビジュアル スタジオのイベント リストに "BotonPresionado" という名前が表示されているため、そのイベントを選択するとコードが生成されます。

私はあなたが私に与えることができるどんな助けにも感謝します.

事前に感謝し、私の英語があまり良くない場合は申し訳ありませんが、まだ学習中です. :)

GUIでカスタムイベントを押したときに生成されるコードを書き忘れていました。

//As we can see, it generates en event for this control not for the buttons.
private void ctrlBotones1_BotonPresionado(HerramientasInterfaz.EstadoBoton edoBoton)
    {
        //I just use a switch to check wich button I pressed.
        switch (edoBoton)
        {
            case HerramientasInterfaz.EstadoBoton.Aceptar:
                Aceptar();
                break;
            case HerramientasInterfaz.EstadoBoton.Nuevo:
                Nuevo();
                break;
            case HerramientasInterfaz.EstadoBoton.Salir:
                Close();
                break;
        }
    }
4

2 に答える 2

0

わかりました、Aaron Daw i は、独自の「イベント」を作成したいと考えています。それは、コンポーネントに同じコードを再利用することを意味します。

この方法で過去にカスタムコンポーネント(JButtons、JMenu)を試しました

public class MyMenu extends JMenu
{
public MyMenu(ImageIcon i,String s)
{
    super();
    setIcon(i);
    setText(s);
    setVerticalTextPosition(SwingConstants.BOTTOM);
    setHorizontalTextPosition(SwingConstants.CENTER);
}
}

「MyMenu」のオブジェクトを作成します。ここでは、毎回プロパティを追加する必要がないため、利点がありました。

同じように、JButton のカスタム リスナーを試してみました。ボタンをクリックすると、「ボタンが押されました」と出力されます。これは customEvent クラスです。

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;


public class CustomListener 
{
JButton button;
public CustomListener(JButton b)
{
button=b;

button.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource()==button)
        {
            System.out.println("button pressed");

        }
    }
});

}
}

これはメインクラスです

import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class MainClass extends JFrame
{
JButton jbutton;
public MainClass()
{
    setLayout(new FlowLayout());
    add(jbutton());
    setSize(800,600);
    setVisible(true);
}
public JButton jbutton()
{
    if(jbutton==null)
    {
        jbutton=new JButton("click");
        new CustomListener(jbutton);
    }
    return jbutton;
}

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

これで、actionListener を再利用できます。

于 2012-06-30T03:25:24.257 に答える
-1

私の友人

簡単なドラッグ ドロップのようなビジュアル スタジオに似たユーザー インターフェイスを探している場合

次に、netbeansでプロジェクトを右クリックし、新しい JFrame フォームをクリックします(他のフォームにない場合)。簡単にドラッグ ドロップユーザーインターフェイスが表示されます。

次に、パレットJButtonからドロップし、それをダブルクリックすると、そのイベントが取得されます....JButtonJButton

于 2012-07-01T18:21:49.577 に答える