2013-11-09 66 views
1

所以我想從一個JDialog獲得來自用戶的輸入,這裏是的JDialog中的代碼:如何將變量設置爲等於用戶輸入到JDialog中的值?

public void addPipeUI(){ 
    Integer[] grade = {1,2,3,4,5}; 
    Integer[] colour = {0, 1, 2}; 
    float length; 
    int diameter; 
    boolean chemResist, innerIns, outerRein; 
    GridLayout gridLayout = new GridLayout(0,2); 

    JDialog dialog = new JDialog(); 
    dialog.setSize(400, 400); 
    dialog.setLocation(250, 250); 
    dialog.setTitle("Add Pipe"); 
    dialog.setLayout(gridLayout); 
    dialog.setVisible(true); 

    dialog.add(new JLabel("Grade")); 
    JComboBox gradeField = new JComboBox(grade); 
    dialog.add(gradeField); 

    dialog.add(new JLabel("Colour")); 
    JComboBox colourField = new JComboBox(colour); 
    dialog.add(colourField); 

    dialog.add(new JLabel("Length (Meters)")); 
    JTextField lengthField = new JTextField(); 
    dialog.add(lengthField); 

    dialog.add(new JLabel("Diameter (Inches)")); 
    JTextField diameterField = new JTextField(); 
    dialog.add(diameterField); 

    JRadioButton innerInsField = new JRadioButton("Inner Insluation"); 
    dialog.add(innerInsField); 

    JRadioButton outerReinField = new JRadioButton("Outer Reinforcement"); 
    dialog.add(outerReinField); 

    JRadioButton chemResistField = new JRadioButton("Chemical Resistance"); 
    dialog.add(chemResistField); 

    JButton ok = new JButton("OK"); 
    dialog.add(ok); 


} 

在頂部,你可以看到我想要的信息的用戶輸入。

當確定按鈕被按下時,我想讓局部變量等於用戶輸入的內容,然後將這些變量返回到我的Main類中進行處理。 我覺得我需要一個OK按鈕上的actionlistener,但是當我這樣做時,局部變量無法使用,現在我只是困惑。我怎樣才能讓本地變量等於用戶輸入的內容?

回答

1

你需要一個動作偵聽器添加到您的按鈕,讓你可以捕捉單擊事件

ok.addActionListener(new ActionListener() { 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     String length = lengthField.getText(); 
     System.out.println("length=" + length); 
    } 
}); 

爲了訪問本地變量lengthField你需要做,如果最後:

final JTextField lengthField = new JTextField(); 

這是因爲動作偵聽器是一個匿名的內部類。 JLS狀態

任何使用但未在內部類中聲明的局部變量,形式參數或異常參數都必須聲明爲final。

另一種選擇是將它作爲你的類的實例變量。

+0

所以,如果我把所有的輸入做成最終的,我可以在actionlistener中使用它們?因爲這會解決我的問題,我想! – benharris

+0

@benharris是的,你可以訪問他們,如果宣佈爲最終。 – A4L

相關問題