窗口不想在应该在java中运行的东西上运行

-2 java swing

我正在和一个朋友一起开发一个程序而且它不想运行,因为程序中唯一的东西是错误,窗口,它没有显示错误或修复它.

这也是我在堆栈溢出时的第一次

码:

package examplepackage;
//imports
import java.awt.FlowLayout;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import examplepackage.GetFilepath;

public class Starter {

    public static void main(String[] args){
        GetFilepath FP = new GetFilepath();
        JFrame win1 = new JFrame("windowname");
        win1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        win1.getContentPane().add(win1, FlowLayout.LEFT, FlowLayout.LEADING);
        win1.pack();
        win1.setVisible(true);
        win1.setLocationRelativeTo(win1);
        win1.setIconImage(new ImageIcon(FP + "\\window\\Main").getImage());
    }

}
Run Code Online (Sandbox Code Playgroud)

Hov*_*els 5

这一行:

win1.getContentPane().add(win1, FlowLayout.LEFT, FlowLayout.LEADING);
Run Code Online (Sandbox Code Playgroud)

没有意义.你似乎试图将一个组件添加到自身(??)一些无法完成的事情,不应该完成,并且看起来有点奇怪,然后在此基础上你也传递了FlowLayout常量不属于某种add(...)方法.整件事不属于所以摆脱它.这让我很奇怪 - 你想用这条线做什么?


编辑
您的评论显示本教程页面的链接:http://docs.oracle.com/javase/tutorial/uiswing/components/frame.html

在页面中,它显示以下代码:

frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);
Run Code Online (Sandbox Code Playgroud)

看起来和你的不一样.该行将JLabel添加到BorderLayout.CENTER位置的JFrame的contentPane.这是有道理的,因为默认情况下contentPane使用BorderLayout,并且因为您正在尝试向JFrame的contentPane添加组件,JLabel.另一方面,您正在尝试将相同的JFrame添加到其自己的contentPane中,并使用FlowLayout常量以从未使用过的方式执行此操作.我不确定你是如何从这个建议中得到你的代码的.它仍然让我难以置信.


编辑2
请注意,FlowLayout常量确实有用,但不是在使用它们时.在创建要指定布局状态的FlowLayout对象时使用它们.例如:

FlowLayout myFlowLayout = new FlowLayout(FlowLayout.LEFT);
JPanel myPanel = new JPanel(myFlowLayout);
Run Code Online (Sandbox Code Playgroud)

或类似但更简短的代码执行相同的操作:

JPanel myPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
Run Code Online (Sandbox Code Playgroud)

即使这样做,也不会将FlowLayout.LEFT和FlowLayout.LEADING组合在一起.在向FlowLayout使用(或使用任何布局)容器添加组件时,您永远不会使用它们.

  • @MMMGamesGameDevCo:他们到底做了什么.向我展示一个告诉您向其自身添加组件的页面,它告诉您在add方法中使用FlowLayout常量. (2认同)