gpt4 book ai didi

java - 使用 JButton 重新加载 JDialog 上的组件

转载 作者:行者123 更新时间:2023-12-02 04:33:03 24 4
gpt4 key购买 nike

我正在开发一个 JDialog,里面有一些组件,如 JLabels、JButtons 等等......这些东西是通过文件填充的。还有一个 JComboBox 定义应读取哪个文件,每次更改此 JComboBox 时,我都需要刷新我的 JDialog。找到this但我不明白如何处理。

这就是我现在正在做的事情:

public class ConfDialog extends JDialog
{

public ConfDialog(JFrame parent, String title, int whidth, int eight)
{
super(parent, title, Dialog.ModalityType.APPLICATION_MODAL);

this.setSize(new Dimension(whidth, eight));
this.setLocation(200, 200);
this.setResizable(false);
this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);

components();
}

public void components()
{

//JLabels, JButtons, ecc... declarations

final JComboBox<File> box = new JComboBox<File>(stuffInFolder);

box.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
validate();//<----
repaint(); //<----
}
});

//...something else...

}

@Override
public void repaint()
{
components();
super.repaint();
}

}

最佳答案

JComboBoxActionListener 被触发时,读取所选文件,然后根据文件中的信息,将 UI 组件的状态/属性更新为必需的,例如,在标签、字段和按钮上调用 setText

public class ConfDialog extends JDialog {

public ConfDialog(JFrame parent, String title, int whidth, int eight) {
super(parent, title, Dialog.ModalityType.APPLICATION_MODAL);

this.setSize(new Dimension(whidth, eight));
this.setLocation(200, 200);
this.setResizable(false);
this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);

components();
}

public void components() {

//JLabels, JButtons, ecc... declarations
final JComboBox<File> box = new JComboBox<File>(stuffInFolder);

box.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
File file = (File) box.getSelectedItem();
if (file != null) {
// Read file
// Update the fields on your UI, using things like setText
// and other methods which change the output of the UI
}
}
});

//...something else...
}

}

大多数组件都足够智能,可以 self 更新。如果您仍然遇到一些问题,可以调用 revalidate,然后调用 repaint

关于java - 使用 JButton 重新加载 JDialog 上的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31199991/

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