Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

adding/removing jpanel in a java swing application

831207Jan 14 2011 — edited Jan 17 2011
Hi guys,

I have to realize a dynamic graphical application using java swing...In this application I have a jframe and a jmenu bar. Using jcheckboxmenuitem located in menu "Algorithms", I have to add/remove complex jpanels (eventually containing jcombox, jlabel, jtextfield) in the jframe when jcheckboxmenuitem are checked/unchecked. Initially, the frame is empty.....For adding/removing a new jpanel in the frame, I use contentPane.add()/contentPane.remove() followed by contentPane.revalidate() (contentPane is a jpanel) and contentPane.repaint(). It seems work fine but....Is this approach correct to realize a java swing application where jpanels are add/remove at runtime??? It ALWAYS works fine???

Here is reported the schema of my application....
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.UIManager;
import javax.swing.border.EmptyBorder;

import org.pushingpixels.substance.api.SubstanceLookAndFeel;
import org.pushingpixels.substance.api.skin.SaharaSkin;

public class NewMainFrame extends JFrame {

	private static final long serialVersionUID = 1L;

	private JPanel contentPane;

	private ListJCheckBoxMenuItem list = null; 
	

	


	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		JFrame.setDefaultLookAndFeelDecorated(true);
		JDialog.setDefaultLookAndFeelDecorated(true);
		UIManager.put("OptionPane.yesButtonText", "Yes");
		UIManager.put("OptionPane.cancelButtonText", "Cancel");
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
		            
					SubstanceLookAndFeel.setSkin(new SaharaSkin());
					
		            NewMainFrame frame = new NewMainFrame();
					frame.setVisible(true);
					frame.setForeground(Color.BLUE);
				
				}
				
				catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	public NewMainFrame() {
		
		setTitle("** XX v1.1 ** ");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 1024, 768);		
		setResizable(false);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		

	    JMenuBar menubar = new JMenuBar(); 	    
	    
	    JMenu startMenu = new JMenu("Start"); 
	    JMenuItem itemX = new JMenuItem("X"); 
	    JMenuItem itemY = new JMenuItem("Y"); 
	    JMenuItem itemZ = new JMenuItem("Z"); 
	    JMenuItem itemClose = new JMenuItem("Close"); 
	    	    
	    startMenu.add(itemX); 
	    startMenu.add(itemY); 
	    startMenu.add(itemZ); 
	    startMenu.add(new JSeparator()); 
	    startMenu.add(itemClose); 
	    
	    JMenu algorithmMenu = new JMenu("Algorithms"); 	
	    
	    
	    list = new ListJCheckBoxMenuItem();
	    
	    list.addNewActionListener(ListJCheckBoxMenuItem.E , new EActionListener());
	    list.addNewActionListener(ListJCheckBoxMenuItem.A, new AActionListener());
	    list.addNewActionListener(ListJCheckBoxMenuItem.I, new IActionListener());
	    list.addNewActionListener(ListJCheckBoxMenuItem.F, new FActionListener());
	    list.addNewActionListener(ListJCheckBoxMenuItem.D, new DActionListener());
	    list.addNewActionListener(ListJCheckBoxMenuItem.B, new BActionListener());
	    list.addNewActionListener(ListJCheckBoxMenuItem.E, new EActionListener());
	    list.addNewActionListener(ListJCheckBoxMenuItem.H, new IActionListener());
	    list.addNewActionListener(ListJCheckBoxMenuItem.G, new GActionListener());
	    
	    for(int i = 0; i < list.numItem(); i++) {
	    	algorithmMenu.add(list.getElement(i));
	    }
	    
	    
	    JMenu aboutMenu = new JMenu("About"); 
	    JMenuItem itemInfo = new JMenuItem("Info about XX..."); 
	    aboutMenu.add(itemInfo);

	    menubar.add(startMenu); 
	    menubar.add(algorithmMenu);
	    menubar.add(aboutMenu);
	    
	    this.setJMenuBar(menubar);
		
	}//End of main
	
	

	private void createAPanel() {
		//add/remove a new jpanel to contentPane
	}

	private void createBPanel() {
		//add/remove a new jpanel to contentPane
	}

	private void createCPanel() {
		//add/remove a new jpanel to contentPane
	}

	private void createDPanel() {
		//add/remove a new jpanel to contentPane				
	}

	private void createEPanel() {
		//add/remove a new jpanel to contentPane				
	}

	private void createFPanel() {
		//add/remove a new jpanel to contentPane		
	}

	private void createGPanel() {
		//add/remove a new jpanel to contentPane				
	}

	private void createHPanel() {
		//add/remove a new jpanel to contentPane
	}

	private void createIPanel() {		
		//add/remove a new jpanel to contentPane
	}	
	
	
	class AActionListener implements ActionListener {

		public void actionPerformed(ActionEvent e) {
			createIPanel();
			contentPane.revalidate();
			contentPane.repaint();
		}
		
	}
	
	class BActionListener implements ActionListener {

		public void actionPerformed(ActionEvent e) {
			createHPanel();
			contentPane.revalidate();
			contentPane.repaint();

		}
		
	}
	
	class CActionListener implements ActionListener {

		public void actionPerformed(ActionEvent e) {
			createGPanel();
			contentPane.revalidate();
			contentPane.repaint();

		}
	
	}
	
	class EActionListener implements ActionListener {

		public void actionPerformed(ActionEvent e) {
			createFPanel();
			contentPane.revalidate();
			contentPane.repaint();

		}
	
	}
	
	class DActionListener implements ActionListener {

		public void actionPerformed(ActionEvent e) {
			createEPanel();
			contentPane.revalidate();
			contentPane.repaint();

		}
	
	}
	
	class FActionListener implements ActionListener {

		public void actionPerformed(ActionEvent e) {
			createDPanel();
			contentPane.revalidate();
			contentPane.repaint();

		}
	
	}
	
	class GActionListener implements ActionListener {

		public void actionPerformed(ActionEvent e) {
			createCPanel();
			contentPane.revalidate();
			contentPane.repaint();

		}
	
	}
	
	class HActionListener implements ActionListener {

		public void actionPerformed(ActionEvent e) {
			createBPanel();
			contentPane.revalidate();
			contentPane.repaint();

		}
	
	}
	
	class IActionListener implements ActionListener {

		public void actionPerformed(ActionEvent e) {
			createAPanel();
			contentPane.revalidate();
			contentPane.repaint();

		}
	
	}
		
}

import java.awt.event.ActionListener;

import javax.swing.JCheckBoxMenuItem;
import javax.swing.JMenuItem;

public class ListJCheckBoxMenuItem {

	public static final int E = 0;


	public static final int A = 1;


	public static final int I = 2;


	public static final int F = 3;


	public static final int D = 4;


	public static final int B = 5;


	public static final int G = 6;


	public static final int H = 7;


	private static final int C = 8;
	
	
	private JCheckBoxMenuItem [] listItem;
	
	public ListJCheckBoxMenuItem() {
		
		listItem = new JCheckBoxMenuItem[9];
		
		listItem[A] = new JCheckBoxMenuItem("A"); 
		listItem[B] = new JCheckBoxMenuItem("B"); 
		listItem[C] = new JCheckBoxMenuItem("C");
		listItem[D] = new JCheckBoxMenuItem("D");
		listItem[E] = new JCheckBoxMenuItem("E");
		listItem[F] = new JCheckBoxMenuItem("F");
		listItem[G] = new JCheckBoxMenuItem("G"); 
		listItem[H] = new JCheckBoxMenuItem("H"); 
		listItem[I] = new JCheckBoxMenuItem("I");
				
	}
		
	public boolean isActivated(int jCheckBoxMenuItemIndex) {
		return listItem[jCheckBoxMenuItemIndex].getState();
	}
	
	public void addNewActionListener(int index_menu, ActionListener listener) {
		listItem[index_menu].addActionListener(listener);
	}

	public int numItem() {
		return listItem.length;
	}

	public JMenuItem getElement(int i2) {
		return listItem[i2];
	}
	
}
I hope that problem is clear..If it isn't clear, please tell me...

Thanks a lot!!!

Edited by: user13735352 on 14-gen-2011 2.11
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Feb 14 2011
Added on Jan 14 2011
6 comments
2,311 views