java - 如何在 Swing 中更新 Jlabel 文本

标签 java swing jlabel

我有一个简单的 GUI 文件,如下: I want to update the Label text each time when new file is selected 但是当我选择任何文件时,它会与现有的 Jlabel 文本重叠,因此,请帮助我如何更新我的 JLabel 文本。

这是我的代码:

protected static void excelButtonAction(){
    excelReturnVal = fc.showOpenDialog(excelButton);
    if(excelReturnVal==JFileChooser.APPROVE_OPTION){                
        FileValidation.excelFileValidation(fc); 
        System.out.println(FileValidation.getName() );
        if(status==JFileChooser.CANCEL_OPTION){

        }else{
          fileName=FileValidation.getName();

          FileValidation.updatemylabel(fileName);
          excelFileName = new JLabel(fileName);
          excelFileName.setText(fileName);
          excelFileName.setBounds(140, 67, 350, 30);
          excelFileName.setFont(new Font("Myriad Pro",Font.PLAIN,10));
          panel.add(excelFileName);
          panel.revalidate();
          panel.repaint();
        }
    } else{
        System.out.println("Open command cancelled by user." + newline);
    }
}    

public static void updatemylabel(String exfileName){
    excelFileName = new JLabel(fileName);
    excelFileName.setText(fileName);
    JFileChooser chooser = new JFileChooser();
    chooser.addPropertyChangeListener(new PropertyChangeListener() {


        public void propertyChange(PropertyChangeEvent evt) {
            if(JFileChooser.SELECTED_FILE_CHANGED_PROPERTY.equals(evt.getPropertyName())){
                JFileChooser chooser = (JFileChooser) evt.getSource();
                File oldFile = (File) evt.getOldValue();
                File newFile = (File) evt.getNewValue();
                File curFile = chooser.getSelectedFile();
            }else if(JFileChooser.SELECTED_FILES_CHANGED_PROPERTY.equals(evt.getPropertyName())){
                 JFileChooser chooser = (JFileChooser)evt.getSource();
                    File[] oldFiles = (File[])evt.getOldValue();
                    File[] newFiles = (File[])evt.getNewValue();
                    File[] files = chooser.getSelectedFiles();
            }

        }
    });
    excelFileName = new JLabel(fileName);
    excelFileName.setText(fileName);
    excelFileName.setBounds(140, 67, 350, 30);
    excelFileName.setFont(new Font("Myriad Pro",Font.PLAIN,10));
    panel.add(excelFileName);
    panel.revalidate();
    panel.repaint();

    existingText=exfileName;


    }

如果需要任何进一步的信息来解决我的问题,请告诉我。 预先感谢您的合作。

最佳答案

您的代码每次都会创建一个新的 JLabel 实例。您需要创建一个实例一次,将其存储在类的字段中,并在需要更新时调用 setText()

关于java - 如何在 Swing 中更新 Jlabel 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48868951/

相关文章:

java - 删除数据库条目后刷新 ListView

java - 用于创建和包含 java 对象的枚举

Java-使滚动 Pane 的大小更改为表格的大小?

java - 将 JSplitPane 与 JTextArea 一起使用

java - JLabel 更改时 Applet 重新定位

java - 如何将 Jlabel 从一个 JPanel 移动到另一个 JPanel

Java:JScrollPane JLabel 太靠近边缘

java - 独立 Jython : Import Error (Apache-POI)

java - 在 Android 上将蒙版应用于 EditText 的最佳方法是什么?

java - 5 秒后删除 JLabel 中的文本?