2016-04-12 11 views
0

よろしくお願いいたします。はい、私はレイアウトマネージャを使用していません。いいえ、それはこの悪いデザインを作っていません(誰かが単に使っていないので、私はここにいる人たちを見てきました)。物事は、私はいつも2つのボタン(それによってアイコンやテキストとしてそれを置くことを不可能にする左のギャップ上にJButton)上のラベルを常に(そして私はいつも)表示することです。この後2つのJButtonの上にJLabelを置く

JFrame frame = new JFrame("ColorTap"); 
private void init() { 

    JButton jb1 = new JButton(""), jb2 = new JButton("-"); 
    JLabel label = new JLabel("TEXT HERE"); 
    label.setForeground(Color.white); 
    label.setFont(new Font("Arial Bold",Font.ITALIC,30)); 
    label.setBounds(60,249,200,100); 
    frame.setLayout(null); 
    jb1.setBounds(0, 0, 300,298); 
    jb2.setBounds(0, 302, 300, 300); 
    jb1.setBackground(Color.black); 
    jb2.setBackground(Color.black); 
    jb1.setBorderPainted(false); 
    jb2.setBorderPainted(false); 
    frame.add(label); 
    frame.add(jb1); 
    frame.add(jb2); 
    frame.setResizable(false); 
    frame.setSize(300, 628); 
    frame.setLocation(550, 50); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 
} 

何見知らぬ人が私にだと、一番下のボタンは、ラベルではなくトップ... HELP上のいずれかの下に留まるということです!ありがとう

+1

'JLayeredPane'を見てください:https://docs.oracle.com/javase/tutorial/uiswing/components/layeredpane.html – Berger

+2

レイアウトマネージャを使用しないと「悪い」デザインではないかもしれませんが、確かにそうですmasochistic;) – dustinroepsch

+4

"*いいえ、これは悪いデザインにはなりません*"それはかなりの声明です。これは具体的には、レイアウトマネージャを使って処理するもののようです。 1つのコンポーネントを2つの他のコンポーネントに配置したいとします。 SOMETHINGはこの関係を管理しなければならず、何かがレイアウトマネージャになるはずです。それは必要ではありませんが、あなたが現在行っているものよりも、より固着力のあるモジュラーデザインになるはずです。 –

答えて

0

スイングは、コンポーネントを2次元でペイントするように最適化されています。それは、コンポーネントが重ならないことを前提としています。オーバーラップするJButtonは、ラベルが描画されないようにするだけのロールオーバー効果のために問題を引き起こすため、ボタンはラベルの上にペイントされます。

ですから、コンポーネントは必ずコンポーネントが適切ZORDERで塗装されていることができますスイングので、重複しないことをスイング伝える必要があります:

JPanel panel = new JPanel() 
{ 
    @Override 
    public boolean isOptimizedDrawingEnabled() 
    { 
     return false; 
    } 
}; 

今、あなたはパネルのレイアウトマネージャを設定し、にあなたのコンポーネントを追加することができます彼らは適切に塗装されます。

参照:レイアウトマネージャを使用している実例については、How to put a JButton with an image on top of another JButton with an image?を参照してください。

関連する問題