[英]Get input from JTextfield
我能夠使代碼執行我想要的操作,但事實是我現在無法從中獲取輸入。 我現在想做的仍然是從JTextfield獲取文本,並將其返回給創建框架對象的main方法。 有人可以幫我從以下代碼中獲取輸入嗎?
package assignment5;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Frame2 extends JDialog implements ActionListener
{
private String a;
private JTextField field = new JTextField(30);
public Frame2(JFrame parent, String title, String message)
{
super(parent, title, true);
if (parent != null)
{
this.setSize(500,150);
this.setLocation(400,200);
}
JPanel messagePane = new JPanel();
messagePane.add(new JLabel(message));
getContentPane().add(messagePane, BorderLayout.PAGE_START);
JPanel buttonPane = new JPanel();
JPanel button2Pane = new JPanel();
JButton button = new JButton("OK");
JButton button2 = new JButton("Cancel");
buttonPane.add(button);
button2Pane.add(button2);
getContentPane().add(buttonPane, BorderLayout.PAGE_END);
getContentPane().add(button2Pane,BorderLayout.EAST);
//button.addActionListener(this);
button.addActionListener(new ActionListener()
{
@Override
public void actionPerformed( ActionEvent event)
{
parent.dispose();
}
});
button2.addActionListener(new ActionListener()
{
@Override
public void actionPerformed( ActionEvent event)
{
parent.dispose();
}
});
JPanel textPane = new JPanel();
JTextField field = new JTextField(30);
textPane.add(field);
getContentPane().add(textPane, BorderLayout.CENTER);
field.addActionListener(this);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
//pack();
setVisible(true);
}
public void b ()
{
a = field.getText();
}
public String g ()
{
System.out.println("wasdfsdf" + a);
return a;
}
@Override
public void actionPerformed(ActionEvent event)
{
a = field.getText();
System.out.println("wasdfsdfsafddsfsdfsdfsafdsggsdfsdf" + a);
// TODO Auto-generated method stub
}
}
當您真正想使用模式JDialog時,您正在創建非模式JFrame。 將MyFrame2更改為模式JDialog,即可解決問題。
有關原因的詳細信息:
編輯
我很驚訝它甚至可以編譯:
many = Integer.parseInt()
您在此行上沒有進行任何解析,並且不會運行。
您可能想給MyFrame2一個公共方法,該方法從其JTextField中提取String,然后在顯示它之后調用該方法。 就像是:
public String getMyTextFieldText() {
return myTextField.getText();
}
然后在調用代碼中:
MyFrame2 myFrame2 = new MyFrame2();
myFrame2.setVisible(true);
String text = myFrame2.getMyTextFieldText();
if (text != null && !text.trim().isEmpty()) {
int someNumber = Integer.parseInt(text);
}
雖然模態確實有助於防止對話框同時出現,但是這並不能解決我的問題,因此我不得不添加以下幾行以確保其符合我的要求:
public void actionPerformed(ActionEvent event)
{
setTexts(field.getText());
}
public String getTexts() {
return texts;
}
public void setTexts(String text) {
this.texts = text;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.