Редактор графического интерфейса пользователя NetBeans не может создать объект

Мне сложно это объяснить, а по-английски еще сложнее... У меня есть этот конструктор component

Balonik = new BalloonTip(textfield, new JLabel("Do not devide by 0!"),
            new RoundedBalloonStyle(5,5,Color.WHITE, Color.BLACK), 
            BalloonTip.Orientation.RIGHT_BELOW, 
            BalloonTip.AttachLocation.ALIGNED, 
            15, 
            15, 
            false
    );

и я помещаю этот код в конструктор frame в проекте jFrame netbeans

public oknoo() {

    initComponents();

    Balonik = new BalloonTip(textfield, new JLabel("Do not devide by 0!"),
            new RoundedBalloonStyle(5,5,Color.WHITE, Color.BLACK), 
            BalloonTip.Orientation.RIGHT_BELOW, 
            BalloonTip.AttachLocation.ALIGNED, 
            15, 
            15, 
            false
    );
}

он компилируется, но BalloonTip не появляется.

Самое смешное, что когда я экспортировал проект в eclipse (где я мог редактировать функцию initComponent()) и оставил этот конструктор component в функции initComponent(), тогда он работал. поэтому тот же код работает в функции initComponent() и не работает в конструкторе....

Я не понимаю. И я спрашиваю, потому что я не могу просто решить эту проблему в Eclipse и экспортировать обратно в netBeans... из-за этого...

/**
 * This method is called from within the constructor to initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is always
 * regenerated by the Form Editor.
 */
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

person Tomasz Mularczyk    schedule 12.01.2015    source источник
comment
Не имеет смысла. Предоставьте компилируемый код, иллюстрирующий проблему.   -  person PM 77-1    schedule 13.01.2015
comment
Вы инициализировали текстовое поле? Рассмотрите возможность предоставления полностью работоспособного примера, демонстрирующего вашу проблему.   -  person MadProgrammer    schedule 13.01.2015
comment
надеюсь теперь понятно...   -  person Tomasz Mularczyk    schedule 13.01.2015


Ответы (1)


BalloonTip не отображается, потому что он создается после вызова pack(). Вам нужно будет вызвать pack() в конструкторе после initComponents(), а не в этом методе.

public oknoo() {

    initComponents();

    Balonik = new BalloonTip(textfield, new JLabel("Do not devide by 0!"),
            new RoundedBalloonStyle(5,5,Color.WHITE, Color.BLACK), 
            BalloonTip.Orientation.RIGHT_BELOW, 
            BalloonTip.AttachLocation.ALIGNED, 
            15, 
            15, 
            false
    );

    pack();
}

Но pack() не следует вызывать в initComponents(). В свойствах Код JFrame (щелкните правой кнопкой мыши фрейм в GUI Builder -> свойства) выберите Без кода изменения размера для Политики размера формы.

person Jean Waghetti    schedule 13.01.2015
comment
Я бы никогда не обнаружил это самостоятельно ... особенно это: в свойствах кода JFrame (щелкните правой кнопкой мыши по фрейму в GUI Builder -> свойства) выберите No Resize Code for Form Size Policy. СПАСИБО - person Tomasz Mularczyk; 13.01.2015
comment
Я подозревал метод pack(). Затем я сделал несколько тестов, редактируя класс фрейма вне NetBeans. Поэтому я просматриваю свойства фрейма, чтобы понять, что можно сделать в NetBeans, чтобы убрать pack() из метода initComponents. - person Jean Waghetti; 13.01.2015