2017-09-26 40 views
0

我需要为我的JFrame组件使用自定义位置,我尝试在Java的文档中查找有关使用insets对象来制作自定义位置,但我没有真正理解这一点。java;在自定义位置添加组件的基本方法(jframe)

如果您有任何方法可以在自定义位置添加组件,或者可以轻松了解如何使用自定义位置的教程/网络/其他内容。

+0

[在盒子布局的组件集自定义位置(可能的重复HTTPS ://www.stackoverflow.com/questions/36227097/set-custom-location-for-a-component-in-box-layout) – ParkerHalo

+0

从[如何使用布局管理器]开始(https://docs.oracle.com/ javase/tutorial/uiswing/layout/layoutlist.html) - 不要被像素完美(或空)布局更简单的想法所困扰,它们不是太长镜头 - 花时间学习如何使用布局经理和救自己一个很多头疼 – MadProgrammer

回答

0

,如果你还没有尝试过空布局,然后看看这个代码,可能有帮助

public static void main(String[] args) { 
    SwingUtilities.invokeLater(NullLayout::new); 
} 

NullLayout() { 
    JFrame frame = new JFrame("Basket Game"); 
    JPanel mainPanel = new JPanel(); 
    mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS)); 

    for (int i = 0; i < 4; i++) { 
     JPanel strip = new JPanel(); 
     strip.setMaximumSize(new Dimension(Integer.MAX_VALUE, 50)); 
     strip.setBorder(BorderFactory.createTitledBorder("Strip " + i)); 
     strip.add(new JLabel("Strip " + i)); 
     mainPanel.add(strip); 
    } 

    JPanel gamearea = new JPanel(); 
    gamearea.setLayout(null); 
    mainPanel.add(gamearea); 

    for (int i = 0; i < 5; i++) { 
     int x = i * 100, y = i * 100; 
     JPanel basket = new JPanel(); 
     basket.setSize(200, 50); 
     basket.setLocation(x, y); 
     basket.setBackground(Color.YELLOW); 
     basket.add(new JLabel("x = " + x + ", y = " + y)); 
     gamearea.add(basket); 
    } 

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setContentPane(mainPanel); 
    frame.pack(); 
    frame.setResizable(false); 
    frame.setSize(600, 600); 

    frame.setVisible(true); 
} 

}

相关问题