Java 如何在Swing中更新Jlabel文本

Java 如何在Swing中更新Jlabel文本,java,swing,jlabel,Java,Swing,Jlabel,我有一个简单的GUI文件,如下所示: 但是,当我选择任何文件时,它与现有的Jlabel文本重叠,因此,请帮助我如何更新我的Jlabel文本 这是我的密码: protected static void excelButtonAction(){ excelReturnVal = fc.showOpenDialog(excelButton); if(excelReturnVal==JFileChooser.APPROVE_OPTION){

我有一个简单的GUI文件,如下所示: 但是,当我选择任何文件时,它与现有的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()

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

为了更好地理解java中的标签,您可以查看以下内容:

setText

公共void setText(字符串文本)

定义此组件将显示的单行文本。如果文本的值为null或空字符串,则不显示任何内容。 此属性的默认值为null


这是一个绑定JavaBeans的属性。

为了更好地理解java中的标签,您可以查看以下内容:

setText

公共void setText(字符串文本)

定义此组件将显示的单行文本。如果文本的值为null或空字符串,则不显示任何内容。 此属性的默认值为null


这是一个绑定JavaBeans的属性。

如果您详细解释,我们将不胜感激,尽管我也尝试过这种方法,但没有运气。您到底尝试了什么,以及“没有运气”到底意味着什么?@Ravi,静态方法的使用告诉我您需要重新设计代码。您不应该使用静态方法。我建议您首先阅读上Swing教程的部分。它向您展示了如何创建JTextArea的单个实例,然后根据需要在不同的方法中更新文本。因此,请下载教程中的
TextDemo
代码,了解其工作原理,然后修复代码。如果您详细解释,我们将不胜感激,尽管我也尝试过这种方法,但没有运气。您到底尝试了什么,以及“没有运气”到底意味着什么?@Ravi,静态方法的使用告诉我需要重新设计代码。您不应该使用静态方法。我建议您首先阅读上Swing教程的部分。它向您展示了如何创建JTextArea的单个实例,然后根据需要在不同的方法中更新文本。因此,请下载本教程中的
TextDemo
代码,了解其工作原理,然后修复代码。1)要更快获得更好的帮助,请发布或。2)
excelFileName.setBounds(140,67,350,30)Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。相反,使用布局管理器,或者与布局填充和边框一起使用。1)为了更快地获得更好的帮助,请发布或。2) 
excelFileName.setBounds(140,67,350,30)Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或与布局填充和边框一起使用。