2016-07-12 6 views
0

この質問は、私はその中のHTMLテキストでのJLabelを持っている私のprevious questionJLabelの表示されないHTMLが正しく

からのフォローアップです。ただし、HTMLコンテンツは正しく表示されていません。 JLabelは26x26ピクセルで、右下に数字が表示されます。私のコードは数字を正しい位置に表示していないようで、その高さは切り捨てられているようです。

final String buffBadgeStyles = "<style>" 
+ "#container {height:26px; width:26px; background-color: red; position:relative;}" 
+ "#bottom {position:absolute; bottom:0; right:0;}" 
+ "</style>"; 

buffSlot_6 = new JLabel(); 
buffSlot_6.setBorder(new LineBorder(Color.BLACK)); 
buffSlot_6.setHorizontalAlignment(SwingConstants.CENTER); 
buffSlot_6.setVerticalAlignment(SwingConstants.CENTER); 
buffSlot_6.setText("<html>" 
+ buffBadgeStyles 
+ "<body>" 
+ "<p id=\"container\"><span id=\"bottom\">2</span></p>" 
+ "</body></html>"); 
buffSlot_6.setFont(new Font("Comic Sans MS", Font.BOLD, 12)); 
panel_playerBuffs.add(buffSlot_6); 

JLabelの私のコードは、このenter image description here

任意の考えを生成している enter image description here しかし、このような何かを探すように意図されています。ここでは

は私のコードですか?

+1

1)HTML/CSSのスイングの実装は非常に基本的です。 2)すぐに助けを得るために、[MCVE]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿してください。 –

+1

なぜHTMLを使用していますか?ラベルのプロパティでテキストの位置を制御できます。テキストの水平/垂直位置を制御するメソッドについては、APIを参照してください。 – camickr

+0

@camickrまた、ラベルの中央に背景画像を追加する必要があるためです。 JLabel APIでは、文字列がイメージと重なり合うことはできません。 – Dragneel

答えて

3

ヘルパーパネル(ラベルをラッピングする)を使用して、パネルの適切なレイアウトを選択することで、このビューを表示できます。あなたはhtmlを必要としないこの方法です。ラベルの代わりにラッピングパネルに26ピクセルのサイズを設定する必要があります。

package so; 

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Font; 

import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.SwingConstants; 
import javax.swing.SwingUtilities; 
import javax.swing.border.LineBorder; 

public class Main { 

    public static void main(String[] args) { 

     SwingUtilities.invokeLater(() -> { 

      JFrame frame = new JFrame("Label test"); 

      JPanel helperPanel = new JPanel(); 

      frame.setContentPane(helperPanel); 
      helperPanel.setLayout(new BorderLayout()); 

      JLabel buffSlot_6 = new JLabel(); 
      buffSlot_6.setBorder(new LineBorder(Color.BLACK)); 
      buffSlot_6.setHorizontalAlignment(SwingConstants.RIGHT); 
      buffSlot_6.setVerticalAlignment(SwingConstants.BOTTOM); 
      buffSlot_6.setText("2"); 

      buffSlot_6.setFont(new Font("Comic Sans MS", Font.BOLD, 12)); 
      helperPanel.add(buffSlot_6, BorderLayout.CENTER); 

      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      frame.setLocationRelativeTo(null); 
      frame.setSize(100, 100); 
      frame.setVisible(true); 

     }); 
    } 
} 
+0

さて、私はこの方法に頼らないようにしていました。私はもっ​​と簡単な解決策があると思った。とにかく、ありがとう。 – Dragneel

関連する問題