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

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

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
    );

и я поместил этот код в конструктор фреймов в проекте JBrame 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
    );
}

он компилируется, однако подсказка Balloon не отображается.

Самое смешное, что когда я экспортировал проект в eclipse(где я мог редактировать функцию initComponent()) и оставил конструктор этого компонента в функции 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() {

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 -> Properties), выберите No Resize Code для политики размера формы.

Другие вопросы по тегам