2017-09-13 29 views
1
は、次のコードは動作しません

それのためのTextLayoutを行った後のJFrameへのJLabelを追加:(JLabelのが画面に表示されません)

JLabel label = new JLabel("Greetings everyone this is Macklemore"); 

    Font f = label.getFont(); 
    String str = label.getText(); 
    FontRenderContext frc = new FontRenderContext(null, true, true);  

    TextLayout tl = new TextLayout(str, f, frc); 

    add(label); 

このコードがしますが(JLabelのはありません画面に表示されます):

JLabel label = new JLabel("Greetings everyone this is Macklemore"); 

    Font f = label.getFont(); 
    String str = label.getText(); 
    FontRenderContext frc = new FontRenderContext(null, true, true);  

    add(label); 

    TextLayout tl = new TextLayout(str, f, frc); 

なぜ、「追加(...)」を妨げるTextLayoutはありますか? (これは、JFrameを拡張しているクラスで進行しています)。私はそれがとにかく働いているので、これは本当に重要ではありませんが、私はまだこれを引き起こしているか分かります。

EDIT:

public class Main { 

    public static void main(String[] args) { 
     new Main(); 
    } 

    public Main() { 
     new Window(800, 400, "Project"); 
    } 

} 


import java.awt.Dimension; 
import java.awt.FlowLayout; 
import java.awt.Font; 
import java.awt.font.FontRenderContext; 
import java.awt.font.TextLayout; 

import javax.swing.JFrame; 
import javax.swing.JLabel; 

public class Window extends JFrame { 

    private static final long serialVersionUID = -8255319694373975038L; 

    public Window(int width, int height, String title) { 

     setPreferredSize(new Dimension(width, height)); 
     setMaximumSize(new Dimension(width, height)); 
     setMinimumSize(new Dimension(width, height)); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setResizable(false); 
     setLocationRelativeTo(null); 
     setTitle(title); 
     setVisible(true); 
     setLayout(new FlowLayout()); 

     JLabel label = new JLabel("Greetings everyone this is Macklemore"); 

     //suggested change 
     Font f = new Font(label.getFont().getAttributes()); 
     String str = label.getText(); 
     FontRenderContext frc = new FontRenderContext(null, true, true);  

     TextLayout tl = new TextLayout(str, f, frc); 

     add(label); 

    } 
} 

P.S.:コードの残りの部分は(これは変更が提案されているを含む)、それが動作しない状況で、このようになります。私はこの長いコードを投稿することを本当に嫌いですが、実際にはこの問題に対処する必要があります。

+0

あなたのコード(より具体的には[mcve])を見たいと思います。オブジェクトを作成する方が良いのでなければ、JFrameを拡張してはいけません。 – Frakcool

+1

は私のためにコンテナに問題があるようです。どのコンポーネントにラベルを追加するかははっきりしていません。 – hairsplitter

+0

@hairsplitter私はJFrameに直接追加します – Trashtalk

答えて

0

setVisible(true)コマンドと全く関係がありません。最後にこれを行わないと、このような問題が発生します。記述された行動はまだ変わっていますが、この質問には少なくとも答えがありました。

+1

私はそう言っていますか? – hairsplitter

+0

@hairsplitterはい、しかし、あなたはそれを** 2回**と言いました。 ;) –

+0

次回はうまくいくでしょう。 ^^ – hairsplitter

関連する問題