我有一个扩展JFrame的MainForm类,其中包含一个JList。
现在点击按钮弹出JDialog,输入凭据,然后下载要在父窗口的Jlist中填充的值列表。
现在如何从我的子类中填充mainForm属性?
MainForm.java
public class MainForm extends JFrame {
static MainForm mainForm;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
mainForm = new MainForm();
mainForm.setVisible(true);
}
});
}
public MainForm() {
loadUI();
}
private void loadUI() {
JPanel panel = new JPanel();
getContentPane().add(panel);
final JList<String> jList = new JList<String>();
final JButton settings = new JButton(settingImage);
settings.setBorder(new EmptyBorder(3, 0, 3, 0));
settings.setBounds(50, 60, 100, 30);
vertical.add(settings);
settings.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
LoginDialog loginDlg = new LoginDialog(mainForm);
loginDlg.setVisible(true);
// if logon successfully
if(loginDlg.isSucceeded()){
settings.setText("Hi " + loginDlg.getUsername() + "!");
}
}
});
add(vertical, BorderLayout.WEST);
add(jList, BorderLayout.CENTER);
DialogWindow.java
public LoginDialog(final Frame parent) {
super(parent, "Login", true);
//
JPanel panel = new JPanel(new GridBagLayout());
//some more lines of code
btnLogin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ftpAuthenticationVO.setIp(urlIP.getText());
ftpAuthenticationVO.setUsername(tfUsername.getText());
ftpAuthenticationVO.setPassword(pfPassword.getText());
FileUtils.saveFTPDetails(ftpAuthenticationVO);
if(ftpConnect.startFTP(CommonConstants.TEMP_TXT_FILE));
{
List<String> list = readSplitTextFiles.readTextFile(CommonConstants.TEMP_TXT_FILE);
//This is the value that is to be populated in the Jlist inside the parent window.
}
答案 0 :(得分:2)
只需将您的JList设为MainForm
public class MainForm extends JFrame {
private JList jlist;
.
.
.
private void loadUI() {
JPanel panel = new JPanel();
getContentPane().add(panel);
jList = new JList<String>();
final JButton settings = new JButton(settingImage);
settings.setBorder(new EmptyBorder(3, 0, 3, 0));
settings.setBounds(50, 60, 100, 30);
vertical.add(settings);
.
.
}
public void setJListModel(List<String> list){
jlist.setModel(new Vector(list));
}
}
在JDialog中
public void actionPerformed(ActionEvent e) {
ftpAuthenticationVO.setIp(urlIP.getText());
ftpAuthenticationVO.setUsername(tfUsername.getText());
ftpAuthenticationVO.setPassword(pfPassword.getText());
FileUtils.saveFTPDetails(ftpAuthenticationVO);
if(ftpConnect.startFTP(CommonConstants.TEMP_TXT_FILE));
{
List<String> list = readSplitTextFiles.readTextFile(CommonConstants.TEMP_TXT_FILE);
(MainForm)parent.setJListModel(list);
}
父母也必须声明为final
。