दिलचस्प पोस्ट
अभी तक एक और getView कई बार कहा जाता है Android ब्लूटूथ का उपयोग कर सीरियल डेटा कैसे प्राप्त करें क्यों stdin से मेरा उपयोगकर्ता इनपुट सही ढंग से मैच नहीं करता? मुझे ऐरो फ़ंक्शन ECMAScript 6 में कब का उपयोग करना चाहिए? जावास्क्रिप्ट के द्वारा सीएसएस छद्म-तत्व शैलियों को बदलना सीएसएस डेवलपमेंट पर्यावरण की तुलना में वेब सर्वर पर अलग ढंग से प्रस्तुत करता है जावास्क्रिप्ट के साथ एकाधिक बायां-हाथ असाइनमेंट IOS 6 में पोर्ट्रेट अभिविन्यास के लिए एक UIViewController को कैसे लागू करें Postgresql: पासवर्ड के साथ स्क्रिप्टिंग psql निष्पादन PHP में कर्ल का टाइमआउट सेट करना जीसीसी में स्ट्रैंट स्थिरांक से 'चार *' `चेतावनियों से नापसंद रूपांतरण से छुटकारा कैसे करें? jQuery – थ्रेड / अतुल्यकालिक किया जा सकता है? जो तेज़ है: स्टैक आवंटन या हीप आवंटन पायथन 2.x – बाइनरी आउटपुट को stdout में लिखें? पीएचपी डोमोनोड में एचटीएमएल कैसे डालें?

ग्रहण विंडोब्युल्डर, जेपीएनएल ओवरलैप करना

मैं JPanel उदाहरण ओवरलैप करने का प्रयास कर रहा हूँ पैनल को सीधे दूसरे स्थान पर रखें, सटीक स्थिति और सटीक आकार में। हर बार जब मैं ऐसा करता हूं तो यह दूसरी पैनल को दूसरी तरफ या नीचे की तरफ ले जाता है, पिछला पैनल एक दूसरे के अंदर बड़ा है और इसमें बटन हैं

यह मैं कैसे करूंगा? ध्यान रखें कि यह विंडो बिल्डर टूल का उपयोग कर रहा है

वेब के समाधान से एकत्रित समाधान "ग्रहण विंडोब्युल्डर, जेपीएनएल ओवरलैप करना"

आप यहां OverlayLayout को देखना चाहते हैं, यहां देखें । यह परंपरागत गैलरी में शामिल नहीं है, लेकिन यह रुचि का हो सकता है

ओवरले नमूना

 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.OverlayLayout; /** @see http://stackoverflow.com/a/13437388/230513 */ public class OverlaySample { public static void main(String args[]) { JFrame frame = new JFrame("Overlay Sample"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(); panel.setLayout(new OverlayLayout(panel)); panel.add(create(1, "One", Color.gray.brighter())); panel.add(create(2, "Two", Color.gray)); panel.add(create(3, "Three", Color.gray.darker())); frame.add(panel, BorderLayout.CENTER); frame.pack(); frame.setLocationByPlatform(true); frame.setVisible(true); } private static JLabel create(final int index, String name, Color color) { JLabel label = new JLabel(name) { private static final int N = 64; @Override public boolean isOpaque() { return true; } @Override public Dimension getPreferredSize() { return new Dimension(index * N, index * N); } @Override public Dimension getMaximumSize() { return new Dimension(index * N, index * N); } }; label.setHorizontalAlignment(JLabel.RIGHT); label.setVerticalAlignment(JLabel.BOTTOM); label.setBackground(color); label.setAlignmentX(0.0f); label.setAlignmentY(0.0f); return label; } } 

मैं JPanels ओवरलैप करने का प्रयास कर रहा हूँ

एक JLayeredPane उपयोग करें ( JLayeredPane ट्यूटोरियल से नीचे चित्र)।

JLayeredPane

दूसरे पर सीधे एक जेपीएनएल रखो,

.. या एक CardLayout रूप में यहां दिखाया गया ..

.. आप उन दोनों में से किस पर निर्भर हैं, क्योंकि मैं उन्हें काफी अलग प्रभाव के रूप में समझता हूं।

अपनी सामग्री के रूप में JLayeredPane (या इसके JLayeredPane ) का प्रयोग करें, फलक में जोड़ना।

उदाहरणों के लिए आंतरिक फ़्रेम का उपयोग कैसे करें

InternalFrameDemo


यहाँ आप घटकों को ओवरले देने का एक अच्छा तरीका देख सकते हैं, और जब कर्सर उस पर रहता है तो पॉप अप करें:

 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ShiftedStackPanel extends JPanel implements MouseListener, ActionListener { private static final long serialVersionUID = 1988454751139668485L; private int layer; private JDesktopPane desktopPane; private Timer timer; private Component currentComponent; private int layerOfCurrent; private int shiftDivision; public ShiftedStackPanel() { this(4); } public ShiftedStackPanel(int shift) { shiftDivision = shift; setLayout(new BorderLayout(0, 0)); desktopPane = new JDesktopPane(); desktopPane.setBackground(SystemColor.window); super.add(desktopPane); timer = new Timer(1000, this); timer.setRepeats(false); } public Component add(Component c) { Dimension dim = c.getPreferredSize(); c.setBounds( (desktopPane.getComponentCount() * (dim.width / shiftDivision)), 0, dim.width, dim.height); desktopPane.add(c, new Integer(++layer)); c.addMouseListener(this); return c; } public void remove(Component c) { throw new IllegalArgumentException( "Removal of component, not yet supported."); // FIXME: allow removal, and shift all latter comps, to left } public void removeAll() { desktopPane.removeAll(); } public static void main(String[] args) { JFrame f = new JFrame("JFrame Wrapper"); ShiftedStackPanel p; f.setContentPane(p = new ShiftedStackPanel(4)); p.add(new JTextField("ABCDEFGHI")); p.add(new JTextField("DEFGHIJKL")); p.add(new JTextField("GHIJKLMNO")); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); f.setMinimumSize(new Dimension(400, 200)); f.setLocationRelativeTo(null); } @Override public void mouseClicked(MouseEvent evt) { if (currentComponent != null) { Component c = (Component) evt.getSource(); currentComponent = c; layerOfCurrent = desktopPane.getLayer(c); desktopPane.remove(c); desktopPane.add(c, new Integer(100)); } } @Override public void mouseEntered(MouseEvent evt) { timer.start(); Component c = (Component) evt.getSource(); currentComponent = c; layerOfCurrent = desktopPane.getLayer(c); } @Override public void mouseExited(MouseEvent evt) { if ((currentComponent != null) && currentComponent == evt.getSource()) { desktopPane.remove(currentComponent); desktopPane.add(currentComponent, new Integer(layerOfCurrent)); currentComponent = null; timer.stop(); } } @Override public void mousePressed(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void mouseReleased(MouseEvent arg0) { // TODO Auto-generated method stub } @Override public void actionPerformed(ActionEvent arg0) { desktopPane.remove(currentComponent); desktopPane.add(currentComponent, new Integer(100)); } } 

फिर भी कुछ समस्याएं हैं, जब फोकस की आवश्यकता होती है, लेकिन JLabel , और JLabel साथ अच्छी तरह काम करना चाहिए।