Java Swing - установить текст Jlabel из другого метода - PullRequest
2 голосов
/ 18 марта 2012

Я довольно новичок в Java и Swing, и я использую Windowbuilder, чтобы поиграть с некоторыми имеющимися у меня идеями с графическим интерфейсом, но я столкнулся с проблемой при попытке установить текст Jlabel.

Windowbuilder автоматически создал экземпляр Jlabel, называемый pathLabel, в методе initialize () следующим образом:

private void initialize() {
    frame = new JFrame();
    frame.setBounds(100, 100, 570, 393);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);

    JLabel pathLabel = new JLabel("New label");
    pathLabel.setBounds(61, 296, 414, 15);
    frame.getContentPane().add(pathLabel);}

Если я использую pathLabel.setText («введите текст здесь») изнутриэто метод initialize (), тогда он работает нормально, но как я могу установить текст из совершенно другого метода?Это не позволяет мне ссылаться на него.

У меня никогда не было этой проблемы в Visual Studio с C #, и я мог установить текст метки с помощью любого метода, который я выбрал.Чего мне не хватает?

Надеюсь, это имеет смысл, и я ценю любую помощь вообще.Благодаря.

Ответы [ 2 ]

2 голосов
/ 18 марта 2012

Вы можете поместить pathLabel в качестве переменной экземпляра в своем классе и получить к ней доступ через все методы класса.

class GUIClass extends JFrame{
 JLabel pathLabel;
 private void initialize() {
   frame = new JFrame();
   frame.setBounds(100, 100, 570, 393);
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.getContentPane().setLayout(null);

   pathLabel = new JLabel("New label");
   pathLabel.setBounds(61, 296, 414, 15);
   frame.getContentPane().add(pathLabel);
}
void func(){
   pathLabel.setText("enter text here");
}
2 голосов
/ 18 марта 2012

Вы можете создать поле для pathLabel в окружающем классе, чтобы все методы класса могли получить к нему доступ:

class YourClass {
    private JLabel pathLabel;
    private void initialize() {
        ...
        // Note that there is no declaration for pathLabel inside initialize
        //   since it was already declared above, and the above
        //   declaration is a reference shared by all class methods
        pathLabel = new JLabel("New label");
        ...}   
}
...