2017-05-24 9 views
0

JFrameにJLabelを追加する際に問題があります。私はいくつかのチュートリアルで説明したようにJPanelを使用しますが、ラベルはフレームにポップアップしません。 JTextField、JButtonなどの他のスイングコンポーネントで同じ問題が発生します。線、四角形などを描画することはできません。私はここで作っています間違いの種類を、誰かが知っている願っています:JFrameにJLabelを追加する

package plot1; 

import java.awt.BorderLayout; 
import java.awt.FlowLayout; 
import java.awt.Graphics; 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 
import javax.swing.border.EmptyBorder; 

public class Gui extends JFrame { 

    private JPanel contentPane; 

    public Gui(){ 

     contentPane = new JPanel(); 
     contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
     contentPane.setLayout(new BorderLayout(0, 0)); 
     setContentPane(contentPane);  

     setSize(1200, 600); 
     setLayout(null); 
     setLocationRelativeTo(null); 
     setTitle("Plot"); 
     addWindowListener(new WindowAdapter(){ 
      public void windowClosed(WindowEvent evnt){ 
       System.exit(0); 
      } 
     }); 
     setResizable(false);  

     JLabel lblStanFunc = new JLabel("Die Funktionssyntax lautet:"); 
     lblStanFunc.setBounds(800, 40, 300, 30); 
     lblStanFunc.setVisible(true); 
     add(lblStanFunc); 

    } 

} 

メイン・メソッドが別のクラスである:

package plot1; 

    public class Main { 
     public static void main(String[] args){ 

      new Gui().setVisible(true);; 

     } 
    } 

フレームは予想通りポップアップしますが、JLabelのが欠落しています。すべての有益なコメントありがとう。

+0

私はこれを再現できません。私はラベルをよく見ることができます。それはフレームの右上にあります。あなたの画面は、JFrame全体を表示するのに十分な大きさではありませんか? – Sweeper

+1

1)すぐに役立つようにするには、[MCVE]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿してください。 2)Java GUIは、異なるロケールで異なるPLAFを使用する異なるOS、画面サイズ、画面解像度などで動作する必要があります。したがって、ピクセルの完全なレイアウトには役立ちません。代わりに、レイアウトマネージャや[それらの組み合わせ](http://stackoverflow.com/a/5630271/418556)と[空白](http://stackoverflow.com/a/17874718/)のレイアウトパディングとボーダーを使用してください。 418556)。 –

+0

'pack'コールが必要な場合があり、SwingのJavaチュートリアルに従ってイベントディスパッチスレッドでGUIを実行する必要があります。 –

答えて

3

ただ、私はどちらかそれを再現することはできませんsetVisible(true)

import java.awt.BorderLayout; 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 

import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.border.EmptyBorder; 

public class GUI extends JFrame { 
    private JPanel contentPane; 

     public GUI(){ 

      contentPane = new JPanel(); 
      contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
      contentPane.setLayout(new BorderLayout(0, 0)); 
      setContentPane(contentPane);  

      setSize(1200, 600); 
      setLayout(null); 
      setLocationRelativeTo(null); 
      setTitle("Plot"); 
      addWindowListener(new WindowAdapter(){ 
       public void windowClosed(WindowEvent evnt){ 
        System.exit(0); 
       } 
      }); 
      setResizable(false); 
      setVisible(true); 

      JLabel lblStanFunc = new JLabel("Die Funktionssyntax lautet:"); 
      lblStanFunc.setBounds(800, 40, 300, 30); 
      lblStanFunc.setVisible(true); 
      add(lblStanFunc); 

     } 

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

を追加します。スイーパーが述べたように、画面のサイズが十分でない場合は、フレームサイズをsetSize(800, 600)に変更し、位置をlblStanFunc.setBounds(300, 250, 300, 30)に変更します。ラベルは画面の中央にある必要があります。

関連する問題