0

Есть базовый класс, а есть другой класс не унаследованный от базового.

Так сложилось что нужно значение label изменить из другого класса (хотя label декларирован в базовом)

Пытался создать объект базового в в другом классе, но это ничего не давало

Код который устанавливает значения такой jLabel.setText("something");

MaximPro
  • 3,913

1 Answers1

6

Вы опять почему-то не приводите код. Будем гадать.

базовый класс
label декларирован в базовом

Допустим:

public class Foo {
    private JLabel jlabel;

    // ... конструкторы, другие методы

    public updateLabel(String text) {
        jLabel.setText(updateLabel);
    }
}

есть другой класс не унаследованный от базового нужно значение label изменить из другого класса

Он должен иметь ссылку на экземпляр "базового класса". Она может быть передана в конструктор или непосредственно в метод, в котором вы хотите обновить label.

public class Bar {
    private Foo foo;

    public Bar(Foo foo) {
        this.foo = foo;
    }

    // метод, в котором вы делаете вызов 
    public void baz() {
        // ... какой-то код ...
        foo.updateLabel("something"); // обращаемся к методу в Foo, чтобы обновить label
        // ... какой-то код ...
    }
}
Nofate
  • 34,603
  • Как мне сделать у объекта jLabel1 свой метод? У меня есть в коде такая строка jLabel1 = new javax.swing.JLabel(); Как я понимаю JLabel - это совсем другой класс и от него нужно создать класс наследник и запихать туда свой метод?! – MaximPro Mar 02 '16 at 03:33
  • нет. метод нужно добавить в класс, в котором строка jLabel1 = new javax.swing.JLabel(); – Nofate Mar 02 '16 at 06:41
  • Ну так я писал примерно ранее что-то эдакое: public void changeLabel1(String text){jLabel1.setText(text);} Но как обратиться не знаю, это ведь не статический метод я же не могу написать: changeLabel1("Hello")? – MaximPro Mar 02 '16 at 07:05
  • ну так создайте объект класса, в котором написан этот метод. – Nofate Mar 02 '16 at 08:30
  • Типо так: final Frame frame = new Frame(); frame.changeLabel1("Hello"); Если я объявлю frame (Frame - это главный класс) то появляется неизвестная ошибка – MaximPro Mar 02 '16 at 09:53
  • public static void main(String args[]){ /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { @Override public void run() { new Frame.setVisible(true); } }); } Это у меня инициализирующая функция. Как обратиться к объекту Frame? Или как сделать на него ссылку? – MaximPro Mar 02 '16 at 10:39
  • Frame frame = new Frame(); frame.setVisible(true); Может быть вам стоит с основ языка начать? – Nofate Mar 02 '16 at 10:48
  • я так писал, но я не мог обратиться к frame из другого метода (потому что эта переменная только для класса main), а если объявить свойство, то он будет говорить что в статическом методе нельзя обращаться к объектам – MaximPro Mar 02 '16 at 10:57
  • Передайте объект frame в другой метод параметром. – Nofate Mar 02 '16 at 11:00
  • Например? а то я уже совсем запутался... – MaximPro Mar 02 '16 at 11:05
  • например, myMethod(frame). тогда внутри метода myMethod можно будет обратиться к frame – Nofate Mar 02 '16 at 11:06
  • Что-то типо такого? В контексте main:frame.getFrame(frame); Теперь объявляем метод: public void getFrame(Frame frame) {frame_link = frame;} Где-то объявляем свойство: public Frame frame_link; Потом обращаемся к методу для лейбла: frame_link.changeLabel1("Hello"); – MaximPro Mar 02 '16 at 11:57
  • может быть, мне трудно гадать по обрывкам кода. – Nofate Mar 02 '16 at 12:00
  • по крайней мере это заработало, спасибо за советы, хотелось бы спросить какую литературу почитать по java (интересует программирование оконных приложений) да и вообщем что посоветуете как эксперт? Просто я в основном сейчас почитывю интернет статьи ибо здоровые книги в 1к страниц читать утомительно и эффект не особо сильный – MaximPro Mar 02 '16 at 12:06
  • У нас же есть хороший список - http://ru.stackoverflow.com/questions/416634 – Nofate Mar 02 '16 at 12:15
  • Если толстые книги плохо идут попробуйте Head First Java (Изучаем Java. Кэти Сиерра, Берт Бейтс.) – Nofate Mar 02 '16 at 12:16
  • заинтересовала ваша книжка!!! буду читать! – MaximPro Mar 02 '16 at 12:22