2013-08-23 24 views
0

我在JFrame中有一个单独的JLabel,最初使用pack()显示。将单独组件锚定在JFrame中

我的问题是,每当我尝试调整窗口大小时,JLabel也会移动(取决于窗口的哪一侧被调整大小),很大程度上是由于JFrame的布局。

更具体地说,无论何时我调整窗口的上/下,JLabel保持居中。我希望不是这样。

如果我的问题很混乱,我很抱歉。如果需要,我会很乐意提供图表。

public class JavaApplication8 { 

    public static void main(String[] args) throws MalformedURLException { 
     // TODO code application logic here 

     JFrame window = new JFrame("test"); 

     URL bgURL = new URL("https://si0.twimg.com/profile_images/3585146044/3b695fa73490227f792fa4e46d4a7a57.jpeg"); 
     ImageIcon bg = new ImageIcon(bgURL); 

     JLabel label = new JLabel(bg); 

     window.add(label, BorderLayout.CENTER); 

     window.pack(); 
     window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     window.setLocationRelativeTo(null); 
     window.setVisible(true); 

    } 
} 
+0

你想要它在哪里?此外,它不会移动,它会放大(假设您使用'BorderLayout')。 –

+0

[SSCCE](http://sscce.org/)比图表更有用。 – kiheru

+0

@ brano88:我只显示一个JLabel,所以我不认为这个位置是问题(除了设置为'pack()'的窗口)。 – kir

回答

3

使用不同的布局管理器:

window.setLayout(new FlowLayout()); 

就足够了的例子。

另一种可能性,如果你想使用BorderLayout保持,被放置标签到不同的位置:

window.add(label, BorderLayout.NORTH); 

还要注意的是,你应该只从event dispatch thread访问Swing组件。

+0

我实际上使用过这个,但是这次删除了用于东侧调整边界的功能,每当我使用东侧边框调整图像大小时,将图像移动到一侧 – kir

+0

@ user2280704我不知道你到底想要什么,但是'window.setLayout(新的FlowLayout(FlowLayout.LEADING))'将图片保留在左上角。 – kiheru