इस प्रकार आप एक्स प्राप्त करने के लिए अनुमति देता है अपने JPanel
JFrame
रों contentPane में जोड़े और वाई getX()
और get()
का उपयोग कर हालांकि मैं सभी जोड़ने का सुझाव था सह तालमेल घटक पहले, क्योंकि अंक बदल सकते हैं क्योंकि अधिक घटकों को जोड़ा जाता है और फिर ट्रैशगोड ने कहा कि फ्रेम उदाहरण पर pack()
पर कॉल करें।
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class Test {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Test().createAndShowUI();
}
});
}
private void createAndShowUI() {
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
initComponents(frame);
frame.pack();//call pack
printPanelCompPoints(mainPanel);//produces correct coords
frame.setVisible(true);
}
private JPanel mainPanel;
private void initComponents(JFrame frame) {
mainPanel = new JPanel(new BorderLayout());
JPanel centerPanel = new JPanel();
JPanel northPanel = new JPanel();
JPanel southPanel = new JPanel();
JPanel westPanel = new JPanel();
JPanel eastPanel = new JPanel();
centerPanel.add(new JLabel("CENTER"));
northPanel.add(new JLabel("NORTH"));
eastPanel.add(new JLabel("EAST"));
southPanel.add(new JLabel("SOUTH"));
westPanel.add(new JLabel("WEST"));
mainPanel.add(centerPanel, BorderLayout.CENTER);
mainPanel.add(northPanel, BorderLayout.NORTH);
mainPanel.add(southPanel, BorderLayout.SOUTH);
mainPanel.add(eastPanel, BorderLayout.EAST);
mainPanel.add(westPanel, BorderLayout.WEST);
frame.getContentPane().add(mainPanel);
printPanelCompPoints(mainPanel);//produces all 0's
}
private void printPanelCompPoints(JPanel mainPanel) {
for (int i = 0; i < mainPanel.getComponentCount(); i++) {
System.out.println(mainPanel.getComponent(i).getX() + ", " + mainPanel.getComponent(i).getY());
}
}
}
आपको बुला रहा initComponents(JFrame frame)
में printPanelCompPoints(mainPanel);
पैदा करता है सभी 0 की, (के रूप में वे फ्रेम में जोड़ा गया है लेकिन `पैक() कहा जाता है नहीं किया गया है) देख सकते हैं:
मैं प्रदर्शित करने के लिए एक छोटा नमूना किया ।
0, 0
0, 0
0, 0
0, 0
0, 0
createAndShowUI()
में
तथापि pack()
बुला के बाद JFrame
एस इंस्टा पर nce printPanelCompPoints(mainPanel);
बुला पैदा करता है सही सह odrinates:
44, 26
0, 0
0, 52
99, 26
0, 26
स्रोत
2012-09-25 20:06:06
_after_ देखने का प्रयास करें 'मान्य()' या 'पैक()'; साथ ही, [एसएससीई] (http://sscce.org/) शामिल करने के लिए अपना प्रश्न संपादित करें जो आपका दृष्टिकोण दिखाता है। – trashgod