Форум программистов, компьютерный форум, киберфорум
Java: GUI, Графика
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 1
Регистрация: 17.09.2015
Сообщений: 68
1

Как одну JLabel использовать несколько раз?

13.10.2015, 12:35. Показов 951. Ответов 13
Метки нет (Все метки)

Добрые программисты помогите) У меня есть два текстовых поля heightField и widthField, а также одна метка JLabel с назв. meterLabel. В поле heightField - я вписую высоту, а в поле widthField - ширину. Я хочу после каждого с полей добавить метку meterLabel с текстом "м.". Когда я ввожу эту метку для другого поля с другими координатами, то метка возле первого поля пропадает.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.10.2015, 12:35
Ответы с готовыми решениями:

Как использовать одну и ту же переменную несколько раз в одном коде
подскажите как использовать одну и туже переменную несколько раз в одном коде допустим А

Как в документе Word. использовать одну и ту же закладку несколько раз на странице
Здравствуйте ребята! Подскажите! Как в документе Word. использовать одну и ту же закладку несколько...

Нужно использовать одну форму много раз. Как скрывать компоненты?
то есть мне надо 1 форму использовать много раз! вот как работать с свойством Visible в Delphi

Можно ли использовать несколько раз setlocale? Если да, то как?
Можно ли использовать несколько раз setlocale? Если да, то как ?Мне это нужно только лишь потому,...

13
237 / 236 / 72
Регистрация: 02.07.2013
Сообщений: 881
13.10.2015, 12:43 2
чет 2 раза прочитал, нифига не понял что требуется

код есть ?
0
745 / 492 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
13.10.2015, 13:01 3
сделай метку static с начала класса

Добавлено через 2 минуты
public static JLabel meterLabel;



затем в методе

meterLabel = new JLabel();


А вызываешь её <имя класса>.meterLabel.setText("lyalya");
или, если она в этом же классе, то просто meterLabel.setText("lyalya");
0
0 / 0 / 1
Регистрация: 17.09.2015
Сообщений: 68
13.10.2015, 13:45  [ТС] 4
ArtemFM, все равно не получается. Держите код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import javax.swing.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
 
 
public class Sample {
    JPanel window = new JPanel();
    JLabel widthWallLabel = new JLabel("3. Ширина стены");
    JLabel heightWallLabel = new JLabel("4. Высота стены");
    JTextField widthWallField = new JTextField();
    JTextField heightWallField = new JTextField();
    JLabel meterLabel = new JLabel("м.");
 
    Sample(){
        window.setLayout(null);
 
        widthWallLabel.setSize(300, 25);
        widthWallLabel.setLocation(50, 140);
        window.add(widthWallLabel);
 
        widthWallField.setSize(75, 25);
        widthWallField.setLocation(360, 140);
        window.add(widthWallField);
 
        meterLabel.setSize(20, 25);
        meterLabel.setLocation(440, 140);
        window.add(meterLabel);
 
        heightWallLabel.setSize(300, 25);
        heightWallLabel.setLocation(50, 170);
        window.add(heightWallLabel);
 
        heightWallField.setSize(75, 25);
        heightWallField.setLocation(360, 170);
        window.add(heightWallField);
 
        meterLabel.setSize(20, 25);
        meterLabel.setLocation(440, 170);
        window.add(meterLabel);
 
        JFrame frame = new JFrame();
        frame.setContentPane(window);
        frame.setSize(1000, 950);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        frame.setResizable(false);
 
 
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent event) {
                Object[] options = {"Да", "Нет"};
                int n = JOptionPane
                        .showOptionDialog(event.getWindow(), "Выйти c программы?",
                                "Confirm Exit", JOptionPane.YES_NO_OPTION,
                                JOptionPane.QUESTION_MESSAGE, null, options,
                                options[0]);
                if (n == 0) {
                    event.getWindow().setVisible(false);
                    System.exit(0);
                }
            }
        });
 
        frame.setVisible(true);
    }
 
    public static void main(String[] args) {
        Sample s = new Sample();
    }
}
0
745 / 492 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
13.10.2015, 13:57 5
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import javax.swing.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
 
 
public class Sample {
    JPanel window = new JPanel();
    JLabel widthWallLabel = new JLabel("3. Ширина стены");
    JLabel heightWallLabel = new JLabel("4. Высота стены");
    JTextField widthWallField = new JTextField();
    JTextField heightWallField = new JTextField();
    public static JLabel meterLabel;
 
    Sample(){
        window.setLayout(null);
 
        widthWallLabel.setSize(300, 25);
        widthWallLabel.setLocation(50, 140);
        window.add(widthWallLabel);
 
        widthWallField.setSize(75, 25);
        widthWallField.setLocation(360, 140);
        window.add(widthWallField);
 
        meterLabel = new JLabel("м.");
        meterLabel.setSize(20, 25);
        meterLabel.setLocation(440, 140);
        window.add(meterLabel);
 
        heightWallLabel.setSize(300, 25);
        heightWallLabel.setLocation(50, 170);
        window.add(heightWallLabel);
 
        heightWallField.setSize(75, 25);
        heightWallField.setLocation(360, 170);
        window.add(heightWallField);
 
        meterLabel.setSize(20, 25);
        meterLabel.setLocation(440, 170);
        window.add(meterLabel);
 
        JFrame frame = new JFrame();
        frame.setContentPane(window);
        frame.setSize(1000, 950);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        frame.setResizable(false);
 
 
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent event) {
                Object[] options = {"Да", "Нет"};
                int n = JOptionPane
                        .showOptionDialog(event.getWindow(), "Выйти c программы?",
                                "Confirm Exit", JOptionPane.YES_NO_OPTION,
                                JOptionPane.QUESTION_MESSAGE, null, options,
                                options[0]);
                if (n == 0) {
                    event.getWindow().setVisible(false);
                    System.exit(0);
                }
            }
        });
 
        frame.setVisible(true);
    }
 
    public static void main(String[] args) {
        Sample s = new Sample();
        s.meterLabel.setText("к.");
    }
}
Добавлено через 7 минут
или можно просто, т.к. переменная static для всех экземпляров будет меняться одинаково:

Java
1
2
3
4
5
public static void main(String[] args) {
        Sample s = new Sample();
        meterLabel.setText("к."); //т.к. находится в этом классе, обращаемся просто
        //если в другом нужно вызвать, то будет Sample.meterLabel.setText("к."); 
    }
0
0 / 0 / 1
Регистрация: 17.09.2015
Сообщений: 68
13.10.2015, 15:12  [ТС] 6
ArtemFm, все равно не выходит! В окно фрейма выводится последняя добавленная Jlable метка, то есть напротив текстового поля "Ширина стены" метки "м." нету. Скрин запущенной программы.
Как одну JLabel использовать несколько раз?
0
745 / 492 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
13.10.2015, 15:19 7
meterLabel - это метка, у которой текст "м."

Добавлено через 52 секунды
А ты хочешь одну и ту же JLabel использовать 2 раза сразу???

Добавлено через 2 минуты
так нельзя... Ты можешь создать отдельный класс, наследуемый от JLabel, и сделать конструктор, если у тебя текст в них идентичный...

Добавлено через 1 минуту
Сейчас пример попробую тебе накидать
0
0 / 0 / 1
Регистрация: 17.09.2015
Сообщений: 68
13.10.2015, 15:36  [ТС] 8
Да, ArtemFm, я хочу использовать одну JLable много раз. На форум я выкинул кусок кода, где эта метка используется всего два раза, у меня же она используется много раз, потому как то не хочется создавать каждый раз JLable с одинаковым текстом.
0
745 / 492 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
13.10.2015, 15:53 9
Не, никак... Делай 2 лейбела отдельно. Так было всегда и будет...
1
0 / 0 / 1
Регистрация: 17.09.2015
Сообщений: 68
13.10.2015, 15:57  [ТС] 10
Спасибо, что объяснил! Просто я думал, что есть какой-то метод для решения этой проблемы.
0
745 / 492 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
13.10.2015, 15:57 11
создай метод, который создаёт идентичные JLabel...

допустим public JLabel label(JFrame frame, int xPos, int yPos, int wedth, int height, String text){}
0
0 / 0 / 1
Регистрация: 17.09.2015
Сообщений: 68
13.10.2015, 15:58  [ТС] 12
Буду пробовать...
0
745 / 492 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
13.10.2015, 16:11 13
создавать будешь 1 строчкой... и потом менять текст одной, для каждого лейбла отдельно

Добавлено через 12 минут
Типа такого:

Java
1
2
3
4
5
6
7
8
9
10
import javax.swing.*;
 
public class MyLabel extends JLabel{
    public void createLabel(JFrame frame, int xPos, int yPos, int width, int height, String text){
        this.setText(text);
        this.setSize(width, height);
        this.setLocation(xPos, yPos);
        frame.add(this);
    }
}
а в методе, где создать нужно, пишешь:

Java
1
2
3
...
MyLabel label1 = new MyLabel();
label1.createLabel(frame, 360, 140, 75, 25, "м.");
1
0 / 0 / 1
Регистрация: 17.09.2015
Сообщений: 68
13.10.2015, 17:44  [ТС] 14
понял, спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.10.2015, 17:44

Как использовать один и тот же case в switch несколько раз?
Как использовать один и тот же case в switch несколько раз?

Как несколько раз использовать метод добавления элементов в массивы, если все значения разные
В классе есть метод добавления в массив. Как мне в программе несколько раз использовать этот метод...

Запустить одну форму несколько раз
Добрый день, у меня есть форма 1, которая запускает форму 2, можно ли из формы один, за один раз...

Надо вывести переменную несколько раз в одну строку
import random as r b = 0 while b &lt; 10: letter = a = r.choice(letter) size =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.