【发布时间】:2021-12-27 04:09:27
【问题描述】:
所以这就是我想要做的就是将 absolutePath 放入 jtextfield,我做了系统打印,它显示了路径,但不会在 jtextfield 中设置文本。
向导类中的动作事件(按钮):
//buttons
JButton openMapButton = new JButton("Load Map");
ImageLoader imgload = new ImageLoader();
openMapButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
imgload.fileChooser();
}
});
Wizard 类中的 Jtextfield:
JTextField mapURLField = new JTextField(20);
ImageLoader 类:
public class ImageLoader extends Wizard{
private JLabel label;
JFileChooser chooser;
File file;
private BufferedImage img;
Wizard wiz = new Wizard();
JTextField mapURLField;
public void loadImg(){
}
public void fileChooser(){
wiz.mapURLField = new JTextField();
if(chooser == null){
chooser = new JFileChooser(".");
}
int returnVal = chooser.showOpenDialog(null);
if(returnVal == JFileChooser.APPROVE_OPTION){
wiz.mapURLField.setText(chooser.getSelectedFile().getAbsolutePath());
System.out.println(chooser.getSelectedFile().getAbsolutePath());
}else{
wiz.mapURLField.setText("");
}
chooser.setSelectedFile(null);
}
}
【问题讨论】:
-
所以你是说
System.out.println(chooser.getSelectedFile().getAbsolutePath());有效但wiz.mapURLField.setText(chooser.getSelectedFile().getAbsolutePath());无效?如果是这种情况,使用任何值设置文本字段是否有效? -
这个,
Wizard wiz = new Wizard();可能是你的问题。您正在创建一个 new 向导对象,但它与显示的对象相同吗?没有像样的minimal reproducible example,真的很难说。我还想知道您是否正确使用了继承,ImageLoader extends Wizard。 -
如果
ImageLoader extends Wizard那么你为什么要实例化new Wizard()- 哎呀重复@HovercraftFullOfEels 评论 -
然后是
wiz.mapURLField = new JTextField();- 这肯定是不是显示的JTextField。恐怕您在整个这段代码中都在滥用引用。
标签: java swing jtextfield jfilechooser