我正在編寫一個帶有JMenu的JFrame的程序。一旦用戶點擊一個menuItem,就會調用一個JDialog,以從用戶那裏獲取一個String。我想在我的主程序中使用該字符串,但我不知道如何將該值從JFrame返回到主程序(我設法將該值從JDialog返回給JFrame)。有任何想法嗎?從JFrame返回一個值到main()
我的主::
public static void main(String[] args)
{
myFirstFrame m = new myFirstFrame();
m.setVisible(true);
String localhost = m.getLh();
System.out.println(localhost);
}
我的JFrame ::
public class myFirstFrame extends JFrame
{
String lh;
myDialog myD;
public myFirstFrame(JFrame mf)
{
super();
setTitle("Welcome");
setSize(300, 300);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
JMenuItem playg = new JMenuItem("Play game");
simetoxi.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent ae)
{
myD = new myDialog(myFirstFrame.this);
myD.setVisible(true);
String lh = myD.getText();
System.out.println(lh + "ASasASas");
dispose();
}
});
JMenu game = new JMenu("GAME");
game.add(playg);
JMenuBar myBar = new JMenuBar();
myBar.add(game);
setJMenuBar(myBar);
}
public String getLh()
{
return lh;
}
}
我的JDialog ::
public class myDialog extends JDialog
{
JTextField t1;
String sname;
public myDialog(JFrame fr)
{
super(fr, true);
setTitle("Connect");
setSize(200, 200);
setLayout(new FlowLayout());
JLabel l1 = new JLabel("Give the server name");
t1 = new JTextField(15);
add(l1);
add(t1);
JButton okb = new JButton("submit");
okb.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent ae)
{
sname = t1.getText();
dispose();
}
});
add(okb);
}
public String getText()
{
return sname;
}
}
一旦你開始運行Swin g應用程序在此處指定爲應用程序啓動:http://www.javamex.com/tutorials/threads/invokelater.shtml然後您不需要與main()函數進行通信,此時的任何內容都是JFrame及其兒童的責任。 – EpicPandaForce