gpt4 book ai didi

java - 使用 JDialog 中的 JFrame 填充 JList、类属性

转载 作者:行者123 更新时间:2023-12-02 06:46:40 24 4
gpt4 key购买 nike

我有一个扩展 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.
}

最佳答案

只需将 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

关于java - 使用 JDialog 中的 JFrame 填充 JList、类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18561534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com