تمامی کنترل های Swing دارای این قابلیت هستند که هنگامی که کرسر ماوس روی آنها قرار گرفت یک متن خلاصه را بصورت pop-up به کاربر نشان دهند(ToolTip).

در جاوا کلاسی که برای نشان دان یک متن pop-up یا Pop-Up Message استفاده می شود ، JToolTip است . برای ایجاد یک ToolTip باید متد setToolTipText از کامپوننت مربوطه فراخوانی گردد. متنی که در JToolTip استفاده می شود معمولا بصورت یک متن تک خطی بوده ولی می تواند بصورت چند خط نیز آنرا تعریف نمود(برای اینکار باید از تگهای HTML استفاده کرد).

JButton.setToolTipText("<html>ToolTip<br> Message");

ایجاد یک JToolTip سفارشی

منظور از ToolTip سفارشی اینست که یک ToolTip مطابق با نیاز خودمان ایجاد کنیم. به عنوان مثال ToolTip ایی ایجاد کنیم که شامل یک عکس باشد. در جاوا هر  کلاس کنترل Swing دارای این قابلیت است که بتوان بسادگی یک ToolTip سفارشی را در درون آن تعریف کرد. انجام این کار با استفاده از متد public JToolTip createToolTip  صورت می گیرد که برای ایجاد آن باید این متد را در داخل کنترل مورد نظر بصورت Override نوشته و سپس تغییرات خود را به آن اعمال کنیم .خروجی متد createToolTip یک آبجکت از نوع JToolTip بوده که باید در داخل این متد با استفاده از کلمه super  آبجکت مورد نظر را ایجاد(1) و سپس تغییرات را به آن نسبت دهیم . به عنوان در مثال در کد زیر یک ToolTip ایجاد کرده ایم که رنگ زمینه آن زرد و رنگ قلم آن مشکی است.

javax.swing.JButton  jButton1 = new javax.swing.JButton(){

    public javax.swing.JToolTip createToolTip(){

        javax.swing.JToolTip tip = super.createToolTip(); (1)

 

        tip.setBackground(java.awt.Color.YELLOW);

        tip.setForeground(java.awt.Color.BLACK);

        return tip;

       }

};

تغییر متن JToolTip با استفاده از موقعیت کرسر

برای کنترل موقعیت  ToolTip باید یک متد بنام public boolean contains(int x , int y را بر روی متد super.contains(x , y)  ،  Overrideکرد . با انجام این کار می توان با توجه به موقعیت کرسر ماوس، متن JToolTip را تغییر داد.

کد زیر نحوه انجام این کار را نشان می دهد . در این مثال اگر کرسر ماوس در مکانهایی با موقعیت افقی (X) کمتر از 50 قرار داشته باشد یک متن خاص و در مکانهایی با موقعیت افقی بیشتر از 50 متنی دیگر را نشان می دهد .

javax.swing.JButton  jButton1 = new javax.swing.JButton(){

    public javax.swing.JToolTip createToolTip(){

        javax.swing.JToolTip tip = super.createToolTip();

 

        tip.setBackground(java.awt.Color.YELLOW);

        tip.setForeground(java.awt.Color.BLACK);

        return tip;

    }

 

    public boolean contains(int x , int y){

        if(x < 50){

            setToolTipText("X < 50 ");

        }else {

            setToolTipText("X > 50");

        }

        return super.contains(x , y);

    }

};

نکته: در NetBeans IDE برای نوشتن کدهای فوق ابتدا باید دستورات JButton  jButton1 ; را در قسمت Pre-Creation Code نوشته و سپس سایر عبارات را  در قسمت Customer creattion Code از پنجره Properties بنویسید.