我正在和一个朋友一起开发一个程序而且它不想运行,因为程序中唯一的东西是错误,窗口,它没有显示错误或修复它.
这也是我在堆栈溢出时的第一次
码:
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)
这一行:
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使用(或使用任何布局)容器添加组件时,您永远不会使用它们.