我正在尝试JPanel
使用i.add(jp, BorderLayout.EAST);
它来设置我的位置,但它不起作用.有什么想法吗?我在这里先向您的帮助表示感谢.
/* INSTANCE DECLARATIONS */ private JTextField tf;//text field instance variable private JLabel jl2;//label instance variable /***************** * WINDOW METHOD * * ***************/ public void window() { LoadImageApp i = new LoadImageApp();//calling image class JFrame gameFrame = new JFrame();//declaration JPanel jp = new JPanel(); JLabel jl = new JLabel("Enter a Letter:");//prompt with label tf = new JTextField(1);//length of text field by character jl2 = new JLabel("Letters Used: "); jp.add(jl);//add label to panel jp.add(tf);//add text field to panel jp.add(jl2);//add letters used gameFrame.add(i); //adds background image to window i.add(jp, BorderLayout.EAST); // adds panel containing label to background image panel gameFrame.setTitle("Hangman");//title of frame window gameFrame.setSize(850, 600);//sets size of frame gameFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//exit when 'x' button pressed gameFrame.setIconImage(new ImageIcon("Hangman-Game-grey.png").getImage());//set the frame icon to an image loaded from a file gameFrame.setLocationRelativeTo(null);//window centered gameFrame.setResizable(false);//user can not resize window gameFrame.setVisible(true);//display frame }//end window method
Hovercraft F.. 5
i
您的LoadImageApp
实例使用什么布局管理器?我打赌不是BorderLayout
.我打赌这个LoadImageApp
类扩展了JPanel
,如果是这样,如果你从未明确设置它的布局,那么它FlowLayout
默认使用一个,并且正如你所发现的那样,FlowLayout
不尊重BorderLayout.EAST
int常量.
解决方案可能很简单:让它使用BorderLayout
:
setLayout(new BorderLayout());
编辑
你在评论中说:
当我将i的边框布局设置为EAST时,我的背景图像也向右移动,有没有办法解决这个问题?
不,你错过了这一点.您需要将LoadImageApp的布局设置为BorderLayout.你不应该添加我的BorderLayout.EAST.这从未被推荐给你.
即
public class LoadImageApp extends JPanel { // in the constructor public LoadImageApp() { setLayout(new BorderLayout()); } // .... etc.... }
应该将LoadImageApp实例(我将其命名为loadImageApp而不是i
)添加到BorderLayout.CENTER中,这是您之前所做的.请阅读您可以在此处找到的布局管理器教程.
i
您的LoadImageApp
实例使用什么布局管理器?我打赌不是BorderLayout
.我打赌这个LoadImageApp
类扩展了JPanel
,如果是这样,如果你从未明确设置它的布局,那么它FlowLayout
默认使用一个,并且正如你所发现的那样,FlowLayout
不尊重BorderLayout.EAST
int常量.
解决方案可能很简单:让它使用BorderLayout
:
setLayout(new BorderLayout());
编辑
你在评论中说:
当我将i的边框布局设置为EAST时,我的背景图像也向右移动,有没有办法解决这个问题?
不,你错过了这一点.您需要将LoadImageApp的布局设置为BorderLayout.你不应该添加我的BorderLayout.EAST.这从未被推荐给你.
即
public class LoadImageApp extends JPanel { // in the constructor public LoadImageApp() { setLayout(new BorderLayout()); } // .... etc.... }
应该将LoadImageApp实例(我将其命名为loadImageApp而不是i
)添加到BorderLayout.CENTER中,这是您之前所做的.请阅读您可以在此处找到的布局管理器教程.