2012-06-29 22 views
0

我一直在尋找幾個小時爲我的問題的解決方案,我有點Java的languaje新的編程,並已設法創建一個自定義面板,其中包含6自定義按鈕,但現在我需要創建一個可以檢測到我按下的事件的事件,我已經使用C#完成了這一操作,但無法在Java中找到方法。如何創建自定義事件(他們必須在netbeans調色板)

這段代碼是用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(); 
    } 

這個例子顯示了事件的Visual Studio的列表中的名稱「BotonPresionado」這樣我就可以選擇該事件,並會生成的代碼。

我會apreciatte很多任何幫助,你可以給我。

非常感謝,如果我的英語不是很好,還在學習。 :)

當我在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; 
     } 
    } 
+2

我會一個ActionListener簡單地添加到每個JButton的,也許是一個匿名內部類。查看ActionListener和JButton教程以獲得更多關於如何執行此操作的信息:[ActionListener教程](http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html),[JButton教程](http: //docs.oracle。com/javase/tutorial/uiswing/components/button.html) –

+2

*「JAVA中的新編程」*爲了將來參考,它是Java,而不是JAVA。 –

回答

0

好吧,Aaron Daw我在某種程度上想要創建自己的「事件」。這意味着要重用組件的相同代碼。

我想自定義組件(Jbutton將,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的是working.when你點擊按鈕,它會打印「按鈕按下」 這是自定義事件類

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。

+0

感謝帕德曼爲你的答案,但我認爲不完全是我所需要的,我添加了更多的事件生成的代碼,也真的需要在NetBeans GUI中選擇事件,認爲我完全可以在C#使用我發佈的代碼的第一部分。 –

0

我的朋友

,如果你正在尋找一個用戶接口類似的視覺工作室一樣容易拖放

然後在的NetBeans右擊你的項目,然後單擊新的JFrame表格(如果它不在那裏然後在其他人),你會有一個容易的拖放用戶界面

跌得JButton調色板,然後雙擊該JButton有你事件JButton ....

相關問題