从Java中的其他类附加到私有TextArea

时间:2017-06-07 15:13:57

标签: java private

class Backend extends UI {
    // some code
    void start() {
        txtRespond.append(Bot + ": hello, " + Name + "\n"); /* have a problem accessing txtRespond */

public class UI extends javax.swing.JFrame {
    // some code
    private javax.swing.JTextArea txtRespond;

我正在尝试从另一个班级向我的JTextArea添加句子。

2 个答案:

答案 0 :(得分:0)

您无法访问父级的private变量,创建变量txtRespond protected或为该变量创建一个getter。

答案 1 :(得分:0)

正如我在发表问题时最初在评论中提到的那样,您需要将私有字段标记为受保护,以便子类可以访问它或提供变异方法。

第二种方法更好,因为它保护了封装。

$(document).ready(function(){

$('#gallery1').click(function() {
  $('#gallery').hide();
  $('#previewGallery1').show();
});

$('#showGallery1').click(function() {
  $('#gallery').show();
  $('#previewGallery1').hide();
});

$('#gallery2').click(function() {
  $('#gallery').hide();
  $('#previewGallery2').show();
});

$('#showGallery2').click(function() {
  $('#gallery').show();
  $('#previewGallery2').hide();
});

$('#gallery3').click(function() {
  $('#gallery').hide();
  $('#previewGallery3').show();
});

$('#showGallery3').click(function() {
  $('#gallery').show();
  $('#previewGallery3').hide();
});

});

让班级负责修改其状态是一种很好的做法。我们应该避免让他们非私人。

* P.S。如果bot,Name在父类中定义,那么你可以只传递字符串的变体部分并将其作为参数传递给父方法(当然你需要修改方法的签名以接受多个字符串)并在方法中定义你可以根据要求处理字符串的合并。