2013-12-09 39 views
0

我正在嘗試使用JFrame創建一個GUI程序,該程序允許我在另一個類的主類中單擊按鈕時調用其他類。我使用JPanel來創建GUI面板,以便我可以組織按鈕等,因此面板的所有部分都不在同一個類中。我很難找出一種方法來在一個類中使用按鈕單擊來讓主要方法調用其他類來執行它們的操作。我試着發送一個int值給一個mutator和accessor,然後從中得到int,但是它沒有設置全局變量。這是一個序列問題嗎?請幫忙。如何使用按鈕動作事件來調用其他類?

這裏是一小片的情況下,我不是很清楚的代碼(我敢肯定我是不是): 這與它的主要方法的類:

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.JOptionPane; 

public class GUI extends JFrame{ 

private hPanel hp; 
private mPanel mp; 

public GUI(){ 
setLayout(new BorderLayout()); 
setTitle("GUI"); 

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
hp = new hPanel(); 
mp = new mPanel(); 
add(hp, BorderLayout.NORTH); 
add(mp, BorderLayout.CENTER); 
pack(); 
setVisible(true); 
} 
public static void main(String[]args){ 
mPanel MP = new mPanel(); 
pPanel PP = new pPanel(); 
int buttIn = MP.getbuttonIndicator(); 


if (MP.getbuttonIndicator()==1){ 
PP.tester1(); 
} 
else if (MP.getbuttonIndicator()==2){ 
PP.tester2(); 
} 
else if (MP.getbuttonIndicator()==3){ 
PP.tester3(); 
} 
else if (MP.getbuttonIndicator()==4){ 
PP.tester4(); 
} 
else if (MP.getbuttonIndicator()==5){ 
PP.tester5(); 
} 
else if (MP.getbuttonIndicator()==6){ 
PP.tester6(); 
} 
new Grade(); 

} 
} 

我想要使用這個actionListener中的按鈕來啓動從主到其他類的調用。這是ActionListener的從主方法的另一個類:

private class JButtonListener implements ActionListener{ 
public void actionPerformed(ActionEvent e){ 
if (e.getSource()==button1){ 
buttonIndicator = 1; 
setbuttonIndicator(buttonIndicator); 
} 
if (e.getSource()==button2){ 
buttonIndicator = 2; 
setbuttonIndicator(buttonIndicator); 
} 
if (e.getSource()==button3){ 
buttonIndicator = 3; 
setbuttonIndicator(buttonIndicator); 
} 
if (e.getSource()==button4){ 
buttonIndicator = 4; 
setbuttonIndicator(buttonIndicator); 
} 
if (e.getSource()==button5){ 
buttonIndicator = 5; 
setbuttonIndicator(buttonIndicator); 
} 
if (e.getSource()==button6){ 
buttonIndicator = 6; 
setbuttonIndicator(buttonIndicator); 
} 

} 
} 
+0

您可能需要考慮查看[如何使用操作](http://docs.oracle.com/javase/tutorial/uiswing/misc/action.html),它爲您提供了指定自我的方法包含一個特定行爲的工作單元,然後可以將其應用於'JButton'。這將允許您封裝所需的引用,並在按鈕被觸發時採取適當的操作... – MadProgrammer

回答

1

這個問題是怎麼樣的不清楚,我的意思是,如果我想我明白你問這個是因爲下面的那樣簡單。

if (e.getSource() == btn) { 
Car c = new Car(); 
c.methodName(parameters); 
} 

這當然假設Car是您項目中的一個班級。

+0

actionListener在沒有主方法的類中,我可以在主方法外部執行該操作嗎?我可以像Car C = new Car(1)那樣傳遞一個值;正確? – user2848565

+0

是的,只要在類的構造函數中傳遞'1'就可以滿足「構造」。 – Tdorno

+0

非常感謝您的幫助,這是一個簡單而簡單的答案,但這是我多年來尋找的缺失部分。你救了我的命!!!! – user2848565

相關問題