2017-05-24 191 views
0

我在将JLabel添加到JFrame时遇到问题。我使用了几个教程中描述的JPanel,但Label不会在Frame中弹出;与其他摆动组件如JTextField,JButton等相同的问题。绘制线条,矩形等工作。我希望有人知道,我在这里做什么样的错误:将JLabel添加到JFrame中

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来处理不同的操作系统,屏幕大小,屏幕分辨率等。因此,它们不利于像素的完美布局。请使用布局管理器或[它们的组合](http://stackoverflow.com/a/5630271/418556)以及[white space]的布局填充和边框(http://stackoverflow.com/a/17874718/ 418556)。 –

+0

您可能需要'pack'调用,并且您需要根据Swing上的Java教程在Event Dispatch Thread上运行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)。标签应该位于屏幕的中心。