java - 为什么我的 JFrame 不显示任何内容?

标签 java swing jframe jpanel

import java.awt.*;
import java.awt.event.*;
import javax.swing.ImageIcon; 
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MAIN_FILE extends JPanel implements ActionListener
{

    public void paintComponent(Graphics g)
    {
        int row = 0;
        int col = 0;
        int x, y;
        int colMax = 29;
        int rowMax = 41;

        super.paintComponent(g);
        ImageIcon ground = new ImageIcon("C:\\Programming\\Ground.jpg");

        for(col = 0; col <= colMax; col++)
        {
            for(row = 0; row <= rowMax; row++)
            {
                x = row * 30;
                y = col * 30;
                ground.paintIcon(this, g, x, y);
            }
        }
        ImageIcon wall = new ImageIcon("C:\\Programming\\WallTest0000.jpg");
    }

    public static void main(String[] args)
    {
        JPanel JP = new JPanel();
        JP.setVisible(true);
        JFrame jf =  new JFrame();
        jf.setTitle("Dungeon Thing");
        jf.setSize(1230, 870);
        jf.setVisible(true);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.add(JP);
    }

最佳答案

添加JPanel后,需要在JFrame上调用revalidate()repaint() .

public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.setSize(300,300);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.add(new JLabel("Label"));
    frame.revalidate();
    frame.repaint();
}

请注意,如果像 David 所说的那样,在调用 setVisible 之前将组件添加到框架中,则不需要 revalidate()repaint():

public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.add(new JLabel("Label"));
    frame.pack();
    frame.setVisible(true);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

关于java - 为什么我的 JFrame 不显示任何内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23531112/

相关文章:

java - 使用 SOLR 来自 Cassandra 数据库没有响应

Java Swing 分层 Pane 未显示其自身或其内容

java - 如何更新标签以使其显示新文本?

java - 如何仅从 ByteArrayOutputStream 在 JFrame 中显示图像?

java - 如何对齐 JTextPane 中选定的文本?

java - JBig2在运行时无法解析?

java - 如何将 Kinesis Firehose 数据传递给 dynamodb 表?

java - 在 Java Swing 的屏幕中心对齐 GroupLayout?

java - 尝试自学 Java GUI (Swing),应该是一个简单的解决方案

java - 如何将顶级框架放置在另一个java中