【问题标题】:How to call a string in another class in java如何在java中调用另一个类中的字符串
【发布时间】:2013-01-21 15:24:06
【问题描述】:

我是一个真正的菜鸟,所以如果我不正确地问对不起。

所以这里是:

 public class carti extends JFrame {
    JTextField txttitlu;
    JTextField txtautor;
    JTextField txtcat;
    JTextField txtedi;
    JTextField txtpret;
    DefaultListModel model;
    JList lista;
    String editura;
    String titlu;
    String autor;
    String categorie;

这是我拥有的主要类函数,在这个类中,我有 4 个 JTextField,它们通过一个按钮插入到 JList 中(这里是添加按钮的脚本“称为“adauga”):

 public void Adauga() {

        autor = txtautor.getText().trim();
        titlu = txttitlu.getText().trim();
        categorie = txtcat.getText().trim();
        editura = txtedi.getText().trim();

        if (autor.equals("")) {
            JOptionPane.showMessageDialog(null, "Nu ati completat Titlu!");
            return;
        }
        if (titlu.equals("")) {
            JOptionPane.showMessageDialog(null, "Nu ati completat Autor!");
            return;
        }
        if (categorie.equals("")) {
            JOptionPane.showMessageDialog(null, "Nu ati completat Categorie!");
            return;
        }
        String numeComplet = autor + " / " + titlu + " : " + categorie;
        model.addElement(numeComplet);

    }

所以我想要的是:“Adauga”按钮添加到我的 JList 中以显示在我的扩展新类上,该类称为“detalii”(这里是 si 创建的新类的代码(“细节”):

public detalii(){

    this.setTitle("Detalii despre Carte");
    setSize(400, 300);
    setResizable(false);
    setLocation(370, 150);
    setLayout(null);
    JLabel lbltitlu= new JLabel("Titlu" +" : "); 
    lbltitlu.setBounds(15, 5, 120, 25);
    this.add(lbltitlu);
    JLabel lblautor= new JLabel("Autor" +" : "); 
    lblautor.setBounds(15, 25, 120, 25);
    this.add(lblautor);
    JLabel lblcategorie= new JLabel("Categorie" +" : "); 
    lblcategorie.setBounds(15, 45, 120, 25);
    this.add(lblcategorie);
    JLabel lbleditura= new JLabel("Editura" +" : "  ); 
    lbleditura.setBounds(15, 65, 120, 25);
    this.add(lbleditura);

}

感谢您的帮助,如果我的解释没有正确完成,我很抱歉,我真的很菜鸟。希望你能理解,不要浪费你的时间。

【问题讨论】:

  • 还有什么问题?
  • 问题是我如何从“detalii”将我在主类中获得的值添加到 JLabels 中,称为“carti”,并且通过按钮 Adauga 将其添加到 JList 中我在同一个班(希望你理解)

标签: java string class


【解决方案1】:

如果我理解正确,您希望“detalii”类的标签使用“Adauga”方法提供的信息进行更新。我想这样做的一种方法是从“Adauga”方法调用“detalii”中的方法。

这就是我要改变“Adauga”的方式:

public void Adauga() {

    autor = txtautor.getText().trim();
    titlu = txttitlu.getText().trim();
    categorie = txtcat.getText().trim();
    editura = txtedi.getText().trim();

    if (autor.equals("")) {
        JOptionPane.showMessageDialog(null, "Nu ati completat Titlu!");
        return;
    }
    if (titlu.equals("")) {
        JOptionPane.showMessageDialog(null, "Nu ati completat Autor!");
        return;
    }
    if (categorie.equals("")) {
        JOptionPane.showMessageDialog(null, "Nu ati completat Categorie!");
        return;
    }
    String numeComplet = autor + " / " + titlu + " : " + categorie;
    model.addElement(numeComplet);

    detalii.pushNewInfo(autor, titlu, categorie, editura);  // Add This Line!

}

我会将“detalii”更改为以下内容:

private JLabel lbltitlu;
private JLabel lblautor;
private JLabel lbleditura;
private JLabel lblcategorie;

public detalii(){

    this.setTitle("Detalii despre Carte");
    setSize(400, 300);
    setResizable(false);
    setLocation(370, 150);
    setLayout(null);
    lbltitlu= new JLabel("Titlu" +" : "); 
    lbltitlu.setBounds(15, 5, 120, 25);
    this.add(lbltitlu);
    lblautor= new JLabel("Autor" +" : "); 
    lblautor.setBounds(15, 25, 120, 25);
    this.add(lblautor);
    lblcategorie= new JLabel("Categorie" +" : "); 
    lblcategorie.setBounds(15, 45, 120, 25);
    this.add(lblcategorie);
    lbleditura= new JLabel("Editura" +" : "  ); 
    lbleditura.setBounds(15, 65, 120, 25);
    this.add(lbleditura);
}

public void pushNewInfo(String author, String title, 
                        String category, String editor) {
    lblautor.setText("Autor : " + author);
    lbltitlu.setText("Titlu : " + title);
    lblcategorie.setText("Categorie : " + category);
    lbleditura.setText("Editura : " + editor);
}

这可能不是最好的解决方案,但鉴于您提供的信息,这就是我将如何解决您的问题。

【讨论】:

  • 感谢您提供的信息,但它说:无法从类型 detalii 对非静态方法 pushNewInfo(String, String, String, String) 进行静态引用。如果我没有发布足够的细节,我会发布更多。抱歉,我正在尽力解释,非常感谢您的帮助。
  • 啊,是的,很抱歉。您需要将“static”关键字添加到“pushNewInfo”方法中,如下所示: public static void pushNewInfo(String author... 希望有帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-14
  • 2014-11-15
  • 2017-11-19
  • 2021-03-30
  • 1970-01-01
  • 2015-05-23
相关资源
最近更新 更多