Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的JFrame什么都不显示? import java.awt.*; 导入java.awt.event.*; 导入javax.swing.ImageIcon; 导入javax.swing.JFrame; 导入javax.swing.JPanel; 公共类MAIN_文件扩展JPanel实现ActionListener { 公共组件(图形g) { int行=0; int col=0; int x,y; int colMax=29; int rowMax=41; 超级组件(g); ImageIcon地面=新的ImageIcon(“C:\\Programming\\ground.jpg”); 对于(col=0;col_Java_Swing_Jframe_Jpanel - Fatal编程技术网

为什么我的JFrame什么都不显示? import java.awt.*; 导入java.awt.event.*; 导入javax.swing.ImageIcon; 导入javax.swing.JFrame; 导入javax.swing.JPanel; 公共类MAIN_文件扩展JPanel实现ActionListener { 公共组件(图形g) { int行=0; int col=0; int x,y; int colMax=29; int rowMax=41; 超级组件(g); ImageIcon地面=新的ImageIcon(“C:\\Programming\\ground.jpg”); 对于(col=0;col

为什么我的JFrame什么都不显示? import java.awt.*; 导入java.awt.event.*; 导入javax.swing.ImageIcon; 导入javax.swing.JFrame; 导入javax.swing.JPanel; 公共类MAIN_文件扩展JPanel实现ActionListener { 公共组件(图形g) { int行=0; int col=0; int x,y; int colMax=29; int rowMax=41; 超级组件(g); ImageIcon地面=新的ImageIcon(“C:\\Programming\\ground.jpg”); 对于(col=0;col,java,swing,jframe,jpanel,Java,Swing,Jframe,Jpanel,一旦调用jf.setVisible(true),事件调度线程将被锁定,等待事件发生 对jf.add(JP)的调用直到窗口被处理之后才会发生 尝试重新排序main中的操作,首先将JPanel添加到JFrame,然后将setVisible(true)添加JPanel后,需要调用revalidate()并在JFrame上重新绘制() import java.awt.*; import java.awt.event.*; import javax.swing.ImageIcon; import jav

一旦调用
jf.setVisible(true)
事件调度线程将被锁定,等待事件发生

jf.add(JP)
的调用直到窗口被处理之后才会发生


尝试重新排序main中的操作,首先将
JPanel
添加到
JFrame
,然后将
setVisible(true)
添加
JPanel
后,需要调用
revalidate()
并在
JFrame
上重新绘制()

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);
    }
注意,如果在调用
setVisible
之前如David所说将组件添加到帧中,则不需要
revalidate()
repaint()


我注意到
main()
到部署时,这些资源很可能会成为一个。在这种情况下,必须通过
URL
而不是
文件来访问资源。请参阅标签,以了解形成
URL
的方法。此外,我们不应该尝试在绘制方法中加载图像。它们应该在启动和运行时加载缓存为类属性。这是不真实的。
public static void main(String[]args){JFrame frame=new JFrame();frame.setSize(300300);frame.setLocationRelativeTo(null);frame.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);System.out.println(“此处”)}
和另一个:
公共静态void main(String[]args){JFrame frame=new JFrame();frame.setSize(300300);frame.setLocationRelativeTo(null);frame.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.add(new JLabel(“标签”);frame.revalidate();frame.repaint();}
@TAsk此答案第一段中的语句仅适用于模式窗口,如模式对话框或选项窗格。由于该错误,其余部分是错误的。
frame.setLocationRelativeTo(null);
对于框架定位,您不能使用
setLocationByPlatform(true)
。请参阅演示。
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
最好使用
JFrame.DISPOSE_ON_CLOSE
。+1否则。或者,如果可能,调用
setVisible
lastOP,调用
EXIT_ON_CLOSE
,但不调用任何帧定位,所以我应该忽略它。
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();
}
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);
}