1
我正在嘗試爲正在進行的工作項目創建另一個GUI屏幕。這個GUI屏幕如果觸發,將打開一個包含三個JTextFields和一個確認按鈕(這是實際JOptionsPane的一部分)的JOptionsPane。將操作監聽器添加到JptionsPane w/JTextFields
我無法使JTextField上的動作偵聽器正常工作。當用戶點擊確認時,我希望文本字段可以提取輸入的任何值。然後通過各種條件,該計劃將繼續。我創建了一個測試類來計劃和創建與我的其餘程序隔離的GUI,以便我可以在下面分享它。讓我補充一點,我爲我創建這個GUI的方式表示歉意。我不擅長GUI的視覺方面,所以我使用了對我來說最簡單的方法,它丟失了很多帶有邊界佈局的JPanel。也許不是最好的,但它的工作原理:)
這裏是我的代碼:
package guitesting;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class GUITesting
{
public static int tester = 0;
public static String resultString = null;
static JTextField tRDFI = new JTextField("RDFI Number Here",30);
public static void NOCGUI(){
String text = "<html>"
+ "This is where the entry detail will go"+
"<br><br>"
+"</html>";
JLabel RDFI = new JLabel("RDFI Number:");
JLabel DDA = new JLabel("DDA:");
JLabel TCode = new JLabel("Transaction Code: ");
tRDFI.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
resultString = tRDFI.getText();
}
});
JTextField tDDA = new JTextField("DDA Number Here",30);
JTextField tTCode = new JTextField("TCode Here",30);
JLabel label = new JLabel(text);
JPanel mainPanel = new JPanel();
JPanel fieldPanel = new JPanel();
JPanel textPanel = new JPanel();
JPanel northFieldPanel = new JPanel();
JPanel southFieldPanel = new JPanel();
JPanel tCodePanel = new JPanel();
JPanel RDFIPanel = new JPanel();
JPanel DDAPanel = new JPanel();
mainPanel.setLayout(new BorderLayout());
fieldPanel.setLayout(new BorderLayout());
textPanel.setLayout(new BorderLayout());
northFieldPanel.setLayout(new BorderLayout());
southFieldPanel.setLayout(new BorderLayout());
tCodePanel.setLayout(new BorderLayout());
RDFIPanel.setLayout(new BorderLayout());
DDAPanel.setLayout(new BorderLayout());
textPanel.add(label,BorderLayout.CENTER);
RDFIPanel.add(RDFI,BorderLayout.WEST);
RDFIPanel.add(tRDFI,BorderLayout.EAST);
tCodePanel.add(TCode,BorderLayout.WEST);
tCodePanel.add(tTCode,BorderLayout.EAST);
DDAPanel.add(DDA,BorderLayout.WEST);
DDAPanel.add(tDDA,BorderLayout.EAST);
northFieldPanel.add(RDFIPanel,BorderLayout.NORTH);
northFieldPanel.add(DDAPanel,BorderLayout.SOUTH);
southFieldPanel.add(tCodePanel,BorderLayout.NORTH);
fieldPanel.add(northFieldPanel,BorderLayout.NORTH);
fieldPanel.add(southFieldPanel,BorderLayout.SOUTH);
mainPanel.add(textPanel,BorderLayout.NORTH);
mainPanel.add(fieldPanel,BorderLayout.SOUTH);
String options[] = {"Confirm"};
int result = JOptionPane.showOptionDialog(null, mainPanel, "NOC Builder", JOptionPane.YES_OPTION,
JOptionPane.PLAIN_MESSAGE,null, options, options[0]);
if(result==0 && resultString.equals("A")){
System.out.println("pass");
}
}
public static void main(String args[]){
GUITesting.NOCGUI();
}
}
哦,我的。我沒有意識到這會很容易。非常感謝威士忌,爲我的問題創造了一個非常簡單的解決方案。 我是否需要有一個動作監聽器才能完成此操作? – jesric1029
不,如果您刪除了ActionListener,則會得到相同的結果。 – whiskeyspider
好的。我完全理解它的工作原理,現在再次感謝您的幫助! – jesric1029