首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于事件处理的一个有关问题

2012-02-10 
关于事件处理的一个问题设计界面时,在窗口弹出一个对话框,填完一些确认信息后,点击“提交”按钮后,使该对话

关于事件处理的一个问题
设计界面时,在窗口弹出一个对话框,填完一些确认信息后,点击“提交”按钮后,使该对话框setVisible(false),那么如何使母窗口里面相应的面板也能响应该事件进而做出一定的反应呢?比方说,在内容显示区可以显示“欢迎你,登录成功”等

关键是我不知道如何响应在你点击了对话框的”提交“按钮后,如何使原窗口的内容显示区获得该事件的处理。。。。。。。。。。

急求答案,十分感谢。。。

[解决办法]
这个完全适合你的要求,请结贴


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

public class DataExchangeTest
{
public static void main(String[] args)
{
DataExchangeFrame frame = new DataExchangeFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

/**
A frame with a menu whose File-> Connect action shows a
password dialog.
*/
class DataExchangeFrame extends JFrame
{
public DataExchangeFrame()
{
setTitle( "DataExchangeTest ");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

// construct a File menu

JMenuBar mbar = new JMenuBar();
setJMenuBar(mbar);
JMenu fileMenu = new JMenu( "File ");
mbar.add(fileMenu);

// add Connect and Exit menu items

JMenuItem connectItem = new JMenuItem( "Connect ");
connectItem.addActionListener(new ConnectAction());
fileMenu.add(connectItem);

// The Exit item exits the program

JMenuItem exitItem = new JMenuItem( "Exit ");
exitItem.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);
}
});
fileMenu.add(exitItem);

textArea = new JTextArea();
add(new JScrollPane(textArea), BorderLayout.CENTER);
}

public static final int DEFAULT_WIDTH = 300;
public static final int DEFAULT_HEIGHT = 200;

private PasswordChooser dialog = null;
private JTextArea textArea;

/**
The Connect action pops up the password dialog.
*/

private class ConnectAction implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
// if first time, construct dialog

if (dialog == null)
dialog = new PasswordChooser();

// set default values
dialog.setUser(new User( "yourname ", null));

// pop up dialog
if (dialog.showDialog(DataExchangeFrame.this, "Connect "))
{
// if accepted, retrieve user input
User u = dialog.getUser();
textArea.append(
"user name = " + u.getName()
+ ", password = " + (new String(u.getPassword()))
+ "\n ");
}
}
}
}

/**
A password chooser that is shown inside a dialog
*/
class PasswordChooser extends JPanel
{
public PasswordChooser()
{
setLayout(new BorderLayout());

// construct a panel with user name and password fields

JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2, 2));
panel.add(new JLabel( "User name: "));
panel.add(username = new JTextField( " "));
panel.add(new JLabel( "Password: "));
panel.add(password = new JPasswordField( " "));
add(panel, BorderLayout.CENTER);



// create Ok and Cancel buttons that terminate the dialog

okButton = new JButton( "Ok ");
okButton.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
ok = true;
dialog.setVisible(false);
}
});

JButton cancelButton = new JButton( "Cancel ");
cancelButton.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
dialog.setVisible(false);
}
});

// add buttons to southern border

JPanel buttonPanel = new JPanel();
buttonPanel.add(okButton);
buttonPanel.add(cancelButton);
add(buttonPanel, BorderLayout.SOUTH);
}

/**
Sets the dialog defaults.
@param u the default user information
*/
public void setUser(User u)
{
username.setText(u.getName());
}

/**
Gets the dialog entries.
@return a User object whose state represents
the dialog entries
*/
public User getUser()
{
return new User(username.getText(), password.getPassword());
}

/**
Show the chooser panel in a dialog
@param parent a component in the owner frame or null
@param title the dialog window title
*/
public boolean showDialog(Component parent, String title)
{
ok = false;

// locate the owner frame

Frame owner = null;
if (parent instanceof Frame)
owner = (Frame) parent;
else
owner = (Frame) SwingUtilities.getAncestorOfClass(Frame.class, parent);

// if first time, or if owner has changed, make new dialog

if (dialog == null || dialog.getOwner() != owner)
{
dialog = new JDialog(owner, true);
dialog.add(this);
dialog.getRootPane().setDefaultButton(okButton);
dialog.pack();
}

// set title and show dialog

dialog.setTitle(title);
dialog.setVisible(true);
return ok;
}

private JTextField username;
private JPasswordField password;
private JButton okButton;
private boolean ok;
private JDialog dialog;
}

/**
A user has a name and password. For security reasons, the
password is stored as a char[], not a String.
*/
class User
{
public User(String aName, char[] aPassword)
{
name = aName;
password = aPassword;
}

public String getName() { return name; }
public char[] getPassword() { return password; }

public void setName(String aName) { name = aName; }
public void setPassword(char[] aPassword) { password = aPassword; }

private String name;
private char[] password;
}

[解决办法]
在button的事件处理中,
第一步,取得母窗口:
getOwner
public Window getOwner()
Returns the owner of this window.

取得母窗口后parentContainer = this.getOwner(),再用如parentContainer.infoLabel.setText( "你好 ");

以后的事,应该不算难了。
[解决办法]
UP


[解决办法]
这种事情,通常是弹出窗口通过一个静态方法返回值,而这个方法内部显示这个弹出窗口,此静态方法当然可以知道自己的状态,而通过静态方法的返回值,父窗口也可以得知弹出的状态。整个过程是顺序的,不存在任何“事件”的回调。
[解决办法]
他把答案都告诉你了lz,你还做个屁啊,只要有一点点提醒,自己想才能有提高的。

热点排行
Bad Request.