2011-01-21 23 views
5

私はJava Swing JLabelsの配列を持っています。私のプログラムのユーザは、JFrameに新しいJLabelを追加することができます。また、JLabel内のテキストのサイズを、フレーム内のJLabelの数に基づいて変更したいとします。 JLabelが多すぎる場合、テキストはそのまま残り、他のJLabelと重ならないようになります。JLabelのテキストを動的にサイズ変更する

+0

[OK] ..そのことについてご質問ありましたか?その場合は、投稿を編集して質問を追加してください。 SSCCE(http://pscode.org/sscce.html)を使用して、すでに試したことがあることをお勧めします。 –

+0

質問は何ですか?動的なサイズのコードは何ですか?ユーザーがラベルを付けるために多くのラベルを追加できるように、 – italiano40

答えて

2

しかし、それはあなたが欲しいものであれば、ここでコンパイルして実行するための素早いコードがあります。あなたのプロジェクトに必要なコードを自由に抽出してください。楽しんで、 - M.

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class LabelSize extends JPanel {  

    private Font  font; 
    private JPanel  panel; 
    private JLabel  label = new JLabel ("Font Size Adapter Label", JLabel.CENTER); 
    private JTextField tf = new JTextField ("Type in text for new label here and hit [Enter]"); 

    public LabelSize() {   
     super (new BorderLayout()); 
     panel = labelPanel(); 
     add (panel, "North"); 
     add (tf, "South"); 
     tf.addActionListener (new ActionListener() { 
      public void actionPerformed (ActionEvent e) { 
       label.setText (tf.getText()); 
       label.setFont (font); 
       int labelW = (int) Math.ceil (label.getPreferredSize().getWidth()); 
       int maxWidth = (int) Math.floor (panel.getSize().getWidth()); 
       if (labelW <= maxWidth) 
        return; 
       for (int k = 1 ; labelW > maxWidth ; k++) { 
        Font labelFont = font.deriveFont (font.getSize() - k*1.0f); 
        label.setFont (labelFont); 
        labelW = (int) Math.ceil (label.getPreferredSize().getWidth()); 
     }}}); 
    } 

    private JPanel labelPanel() { 
     JPanel lp = new JPanel(new BorderLayout()); 
     lp.setPreferredSize (new Dimension (270,30)); 
     lp.add (label, "North"); 
     font = label.getFont(); 
     return lp; 
    } 

    public static void main (String[] args) { 
     JFrame lsFrame = new JFrame ("Lfit"); 
     lsFrame.add (new LabelSize()); 
     lsFrame.pack(); 
     lsFrame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); 
     lsFrame.setVisible(true); 
}} 
+0

はありがたいですが、私のために働いているものはありません。 Jlabelのサイズ – italiano40

+0

あなたは大歓迎です、そして、申し訳ありませんが、私はcomentを理解していません - コードのどの部分がうまくいかないのですか?私はちょうど編集者にコピーして保存し、コンパイルして実行し、うまく動作します。あなたの質問を正しく受けられなかったかもしれません - どのコンポーネント(何か)をリサイズしたいのですか? JLabelを固定(デフォルト)フォントにしたいですか? –

関連する問題