2016-10-17 19 views
1

この種の問題を確認する方法。私はデスクトップアプリケーション用のメニューをチェックすると、クローズボタンのツールチップの表示が正面に常に表示されるように表示されます。しかし、いくつかはモーダルダイアログの後ろに表示されます。バグのモーダルダイアログのツールチップ

スクリーンショット:私たちは、JAVAのスイングを使用しているhttps://coderanch.com/t/460688/java/Glasspanes-tooltips

import java.awt.Color; 
import java.awt.Graphics; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 


class GlassPaneContent extends JPanel { 

    GlassPaneContent() { 
     setSize(200, 50); 
     ToolTipManager.sharedInstance().setLightWeightPopupEnabled(false); 
     JButton button = new JButton("A button"); 
     button.setToolTipText("A tooltip"); 
     add(button); 

    } 
} 

class GlassPane extends JPanel { 

    private static final Color BG_COLOR = new Color(0, 0, 0, 96); 
    private GlassPaneContent content = new GlassPaneContent(); 

    public GlassPane() { 
     setLayout(null); 
     setOpaque(false); 
     add(content); 
    } 

    @Override 
    protected void paintComponent(Graphics g) { 
     g.setColor(BG_COLOR); 
     g.fillRect(0, 0, getWidth(), getHeight()); 
     int x = (getWidth() - content.getWidth())/2; 
     int y = (getHeight() - content.getHeight())/2; 
     content.setLocation(x, y); 
     super.paintComponent(g); 
    } 
} 

public class MainWindow extends JFrame { 

    public MainWindow() { 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     setSize(500, 500); 
     GlassPane gp = new GlassPane(); 
     getRootPane().setGlassPane(gp); 
     gp.setVisible(true); 
    } 

    public static void main(String[] args) { 
     new MainWindow().setVisible(true); 
    } 
} 

Tooltip_issue

私は一種の投稿1と同じ問題を抱えています。これまでにコードを投稿する必要がある場合は、下にコメントしてください。ありがとうございました!

+0

[SSCCE](http://sscce.org)を提供し、それを再現する手順してください。 –

答えて

1

はこの1つを試してみてください:

public class MainWindow extends JFrame { 

    public MainWindow() { 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     setSize(500, 500); 
     GlassPane gp = new GlassPane(); 
     setContentPane(gp); 
     this.setVisible(true); 
    } 

    public static void main(String[] args) { 
     new MainWindow(); 
    } 
} 
+0

それは働いている!どうもありがとうございます。私はちょうど私が本当にJavaのスイングに新しいので尋ねたい。 setContentPane(gp)を使ってgetRootPane()を使うことの違いは何ですか?setGlassPane(gp)? – Pseudonymous

+1

私は助けることができてうれしいです!問題は、 'setGlassPane(gp)'を使っていたので、JPanelの実装はguiの上のレイヤーとして機能するということでした。 'paintComponent'メソッドを使うと、矩形を描くので(この部分は透明ではなくなります)、ツールチップの上に隠れるようにガラス板上に透明になります。詳細は、次のURLを参照してください。https://docs.oracle.com/javase/tutorial/uiswing/components/rootpane.html –

関連する問題