दिलचस्प पोस्ट
कैसे पीडीओ के बाहर त्रुटि संदेश निचोड़? आप प्रदर्शन परीक्षण जावास्क्रिप्ट कोड कैसे करते हैं? आर में अपवाद हैंडलिंग जावास्क्रिप्ट के साथ रेडियो बटन मूल्य प्राप्त करें आदेश देने के बाद ओरेकल क्वेरी द्वारा दिए गए पंक्तियों की संख्या को मैं कैसे सीमित कर सकता हूं? मुझे हमेशा मेरी अपवाद क्यों बनाना चाहिए? (.NET) जब "वस्तु के बाहर" कोई वस्तु है? हैंडलर बनाम एसिंक टास्क बनाम थ्रेड Java में बतख टंकण का क्या उदाहरण है? स्विफ्ट में NS_OPTIONS- शैली बिटमैस्क एन्यूमरेशन कैसे बनाएं? जावास्क्रिप्ट में ऑब्जेक्ट्स को सीरियललाइज़ / अनसियलाइज़ करने का सबसे अच्छा तरीका? जावास्क्रिप्ट प्रोटोटाइप इवेंट हैंडलर में 'इस' संदर्भ को सुरक्षित रखें जेपीए (एक्लेप्सेलिंक) में कैशिंग अक्षम करें आईओएस 7 स्प्राइट किट अप फ्रीमेड मेमोरी जांचें कि एकाधिक स्ट्रिंग किसी अन्य स्ट्रिंग में मौजूद हैं या नहीं

जावा स्विंग: गतिशील तरीके से जीयूआई को कैसे बदला जाए

मुझे घटकों को गतिशील रूप से जोड़ने की आवश्यकता है I इसके अलावा, मुझे गतिशील रूप से लेआउट को बदलने की आवश्यकता है

वेब के समाधान से एकत्रित समाधान "जावा स्विंग: गतिशील तरीके से जीयूआई को कैसे बदला जाए"

संदर्भ के लिए, यहां एक एसएससीसी है जो आवश्यक विधि दिखाती है, validate() । यह अधिक व्यापक उदाहरण दोनों आवश्यकताओं को दिखाता है: यह लेआउट बदलता है और गतिशील रूप से घटकों को जोड़ता है।

 import java.awt.*; import java.awt.event.ActionEvent; import javax.swing.*; /** @see http://stackoverflow.com/questions/5750068 */ public class DynamicLayout extends JPanel { private static final LayoutManager H = new GridLayout(1, 0); private static final LayoutManager V = new GridLayout(0, 1); public DynamicLayout() { this.setLayout(H); this.setPreferredSize(new Dimension(320, 240)); for (int i = 0; i < 3; i++) { this.add(new JLabel("Label " + String.valueOf(i), JLabel.CENTER)); } } private void display() { JFrame f = new JFrame("DynamicLayout"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(this); JPanel p = new JPanel(); p.add(new JButton(new AbstractAction("Horizontal") { @Override public void actionPerformed(ActionEvent e) { DynamicLayout.this.setLayout(H); DynamicLayout.this.validate(); } })); p.add(new JButton(new AbstractAction("Vertical") { @Override public void actionPerformed(ActionEvent e) { DynamicLayout.this.setLayout(V); DynamicLayout.this.validate(); } })); f.add(p, BorderLayout.SOUTH); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { new DynamicLayout().display(); } }); } } 

गतिशील रूप से लेआउट को बदलने का उदाहरण:

 package swinglayout; import java.awt.BorderLayout; import java.awt.Container; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class LayoutChanger implements ActionListener{ JButton b1; JButton b2; JButton b3; JButton b4; JButton b5; JButton b6; /** This button set the flowlayout on panel2 with left orientation */ JButton flowLayout; /** This button set the Gridlayout of 2,3 grid on panel2 */ JButton gridLayout; /** This button set the Borderlayout on panel2*/ JButton borderLayout; /** * This panel is control panel where we use button to change * layout of another panel */ JPanel panel; /** This panel contain multiple button from b1 to b6 */ JPanel panel2; JFrame frame; public LayoutChanger() { //set Default Look and Feel on frame JFrame.setDefaultLookAndFeelDecorated(true); frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container con = frame.getContentPane(); con.setLayout(new BorderLayout()); panel = new JPanel(); panel2 = new JPanel(); //This button are used to only showing the layout effect b1 = new JButton("HelloButton1"); b2 = new JButton("HelloButton2"); b3 = new JButton("HelloButton3"); b4 = new JButton("HelloButton4"); b5 = new JButton("HelloButton5"); b6 = new JButton("HelloButton6"); // By default panel have layout panel2.add(b1); panel2.add(b2); panel2.add(b3); panel2.add(b4); panel2.add(b5); panel2.add(b6); // Layout changer button flowLayout = new JButton("FlowLayout"); gridLayout = new JButton("GridLayout"); borderLayout = new JButton("BorderLayout"); //call Action listener on every layout changer button flowLayout.addActionListener(this); gridLayout.addActionListener(this); borderLayout.addActionListener(this); panel.add(flowLayout); panel.add(gridLayout); panel.add(borderLayout); // add layout changer button panel at a top //button panel at the center of container con.add(panel, BorderLayout.PAGE_START); con.add(panel2, BorderLayout.CENTER); frame.setVisible(true); frame.pack(); } public void actionPerformed(ActionEvent e) { //set the flowlayout on panel2 if(e.getSource() == flowLayout) { FlowLayout flow = new FlowLayout(FlowLayout.LEFT); panel2.setLayout(flow); panel2.validate(); } //set the gridlayout on panel2 if(e.getSource() == gridLayout) { GridLayout grid = new GridLayout(2,3); panel2.setLayout(grid); panel2.validate(); } //set the gridlayout but the problem if we don't set the constraint //all button are set on center. So you remove the all button from panel //Then set grid layout on panel and add them with constraints. if(e.getSource() == borderLayout) { panel2.remove(b1); panel2.remove(b2); panel2.remove(b3); panel2.remove(b4); panel2.remove(b5); panel2.remove(b6); BorderLayout border = new BorderLayout(); panel2.setLayout(border); panel2.add(b1,BorderLayout.NORTH); panel2.add(b2,BorderLayout.SOUTH); panel2.add(b3,BorderLayout.EAST); panel2.add(b4,BorderLayout.WEST); panel2.add(b5,BorderLayout.CENTER); panel2.add(b6,BorderLayout.BEFORE_FIRST_LINE); panel2.validate(); } } public static void main(String args[]) { new LayoutChanger(); } } 

एक बात याद रखती है कि आप पैनल पर नए लेआउट सेट करते हैं, पैनल पर विधि को validate() नहीं करें validate() भूल नहींें। यदि आप इस विधि को कॉल नहीं करते हैं तो आपको लेआउट में बदलाव का असर नहीं दिखाई देता है। यदि आप प्रभाव को देखने के साथ प्रभाव को देखना चाहते हैं तो आपको फ्रेम का आकार बदलना चाहिए। इसके अलावा आप FlowLayout , GridLayout लेआउट और BoxLayout तरह ही आसानी से एक ही लेआउट सेट कर सकते हैं, लेकिन जब सीमा सेट करते हैं, तो तत्व जोड़ने के लिए आवश्यक बाधाओं को सेट करते हैं, इसलिए हम पहले सभी घटक को remove(Component comp) विधि से पैनल से remove(Component comp) तो पैनल में घटक को बाधा से जोड़ दें