0

我有两节课。元数据提取器(GUI)和元数据。

MetaData 具有从图像中提取元数据的方法。MetaDataExtractor 旨在在 JTextPane 中显示数据。(请原谅类名。我知道这有点令人困惑。我对 Java 还很陌生)。

元数据提取器:

LongitudeField.setText("" + MetaDataTags.getLongitude());

元数据:

public String getLongitude() {
    try {
        Metadata metadata = ImageMetadataReader.readMetadata(jpegFile);
        if (metadata.containsDirectory(GpsDirectory.class)) {
            GpsDirectory gpsDir = (GpsDirectory) metadata.getDirectory(GpsDirectory.class);
            GpsDescriptor gpsDesc = new GpsDescriptor(gpsDir);
            String Longitude = "" + gpsDesc.getGpsLongitudeDescription();

        }
    } catch (ImageProcessingException ex) {
        Logger.getLogger(MetaData.class.getName()).log(Level.SEVERE, null, ex);
        System.out.println("Error 1");
    } catch (IOException ex) {
        Logger.getLogger(MetaData.class.getName()).log(Level.SEVERE, null, ex);
        System.out.println("Error 2");
    }        
    return longitude;
}

如果我设置要在 JTextPane 中显示的经度,它会返回“null”。但是,如果我将它设置为在命令行上打印,它会打印经度吗?

如果它是一个简单的解决方案,请原谅。我仍在掌握Java。

4

1 回答 1

0

Java 区分大小写,并首先在 try & catch 语句之外声明您的变量。

使用像 Eclipse 这样的 IDE 来减少这样的语法错误。

所以你应该有:

public String getLongitude() {
    String longitudeDesc ="";
    try {
        Metadata metadata = ImageMetadataReader.readMetadata(jpegFile);
        if (metadata.containsDirectory(GpsDirectory.class)) {
            GpsDirectory gpsDir = (GpsDirectory) metadata.getDirectory(GpsDirectory.class);
            GpsDescriptor gpsDesc = new GpsDescriptor(gpsDir);
            longitudeDesc = "" + gpsDesc.getGpsLongitudeDescription();

        }
    } catch (ImageProcessingException ex) {
        Logger.getLogger(MetaData.class.getName()).log(Level.SEVERE, null, ex);
        System.out.println("Error 1");
    } catch (IOException ex) {
        Logger.getLogger(MetaData.class.getName()).log(Level.SEVERE, null, ex);
        System.out.println("Error 2");
    }        
    return longitudeDesc ;
}
于 2012-06-05T14:54:27.023 回答