【问题标题】:Why are my jTextFields getting the wrong values?为什么我的 jTextFields 得到错误的值?
【发布时间】:2018-03-30 05:20:34
【问题描述】:

添加歌曲对话框

public static javax.swing.JTextField getjTextFieldArtist() {
    return jTextFieldArtist;
}

public void setjTextFieldArtist(javax.swing.JTextField jTextFieldArtist) {
    this.jTextFieldArtist = jTextFieldArtist;
}

public static javax.swing.JTextField getjTextFieldFileName() {
    return jTextFieldFileName;
}

public void setjTextFieldFileName(javax.swing.JTextField jTextFieldFileName) {
    this.jTextFieldFileName = jTextFieldFileName;
}

public static javax.swing.JTextField getjTextFieldSongGenre() {
    return jTextFieldSongGenre;
}

public void setjTextFieldSongGenre(javax.swing.JTextField jTextFieldSongGenre) {
    this.jTextFieldSongGenre = jTextFieldSongGenre;
}

public static javax.swing.JTextField getjTextFieldSongName() {
    return jTextFieldSongName;
}

public void setjTextFieldSongName(javax.swing.JTextField jTextFieldSongName) {
    this.jTextFieldSongName = jTextFieldSongName;
}


}

主窗体

 private void jButtonAddSongActionPerformed(java.awt.event.ActionEvent evt) {                                               
 AddSongDialog addSongDialog = new AddSongDialog(this, true);
 addSongDialog.setLocationRelativeTo(this);
 addSongDialog.setVisible(true);

 String fileName = AddSongDialog.getjTextFieldFileName().getText();
 String songName = AddSongDialog.getjTextFieldSongName().getText();
 String songGenre = AddSongDialog.getjTextFieldSongGenre().getText();
 String songArtist = AddSongDialog.getjTextFieldArtist().getText();

 Song songInfo = new Song(songName, fileName, songGenre, songArtist);
 Song files = new Song(fileName, fileName, fileName, fileName);

 songs.add(songInfo);
 songFileLibrary.add(files);

 WriteToFile();

 updatejListMusicLibrary();
 updatejListFileLibrary();
}                                              



private void jListMusicLibraryMouseClicked(java.awt.event.MouseEvent evt) {                                               
    JList ListMusicLibrary = (JList)evt.getSource();

    if(evt.getClickCount() == 2) {
        currentMusicLibraryIndex = 
ListMusicLibrary.locationToIndex(evt.getPoint());

        //Song s = songs.get(jListMusicLibrary.getSelectedIndex());
        SongInfoDialog sid = new SongInfoDialog(this,true);


        if(ListMusicLibrary.getSelectedIndex() != -1)
        {
            Song s = songs.get(ListMusicLibrary.getSelectedIndex());
            sid.setArtist(s.getSongArtist());
            sid.setGenre(s.getSongGenre());
            sid.setFileType(s.getFileType(AddSongDialog.getjTextFieldFileName().getText()));
        }

        sid.setLocationRelativeTo(this);
        sid.setVisible(true);
    }
} 

歌曲信息对话框

  public String getArtist() {
    return artist;
}

public String getGenre() {
    return genre;
}

public String getFileType() {
    return fileType;
}

public void setArtist(String artist) {
    this.artist = artist;
    jTextFieldArtistInfo.setText(artist);
}

public void setGenre(String genre) {
    this.genre = genre;
    jTextFieldGenreInfo.setText(genre);
}

public void setFileType(String fileType)
{
    this.fileType = fileType;
    jTextFieldFileType.setText(fileType);
}

}

我在这里尝试让 SongInfoDialog 中的 jTextFields 显示单首歌曲的艺术家、流派和文件类型信息。但是,当我运行程序时,流派的 jTextField 获取流派信息,艺术家的 jTextField 获取歌曲文件信息。 fileType 的 jTextField 根本不显示任何内容。

【问题讨论】:

    标签: java jtextfield


    【解决方案1】:

    您的 AddSongDialog 类似乎混合了静态变量(类的变量,因此所有实例的变量值相同,很常见)和实例变量(每个实例中的变量,因此每个实例都是唯一的,因此不常见)。您的 getter 是静态方法,因此使用公共数据,而您的 setter 是实例方法,因此使用唯一/每个实例数据。

    现在我为什么要获取/设置对话框的文本字段。

    那些 JTextFields 应该在你的类中,而不是你会有类似的方法

    private JTextField filenameTextField = new JTextField();
    
    public String getFilename() {
        return this.filenameTextField.getText();
    }
    
    public void setFilename(String filename) {
        this.filenameTextField.setText(filename);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-26
      相关资源
      最近更新 更多