Refreshing a set of JPanels

Hello there,
I have an issue with refreshing and replacing my JPanel colors. As you can see, the format is GridLayout with the size of the grid changing based on what file they open. My issue is that when a second file is opened, it merely adds those JPanels to the end of the previously loaded set of JPanels. I've tried refresh() and repaint() but to no avail. Maybe I placed them in the wrong place, not sure. Thanks in advance.
          if (actionCommand.equals("Open..."))
               JFileChooser fileChooser = new JFileChooser();
               fileChooser.setDialogTitle("Choose a file");
               this.getContentPane().add(fileChooser);
               fileChooser.setVisible(true);
               int result = fileChooser.showOpenDialog(this);
               File file = fileChooser.getSelectedFile();
               GridMap gm = new GridMap();
               gm.read(file);
               int row = gm.getRow();
               int col = gm.getColumn();
               setLayout(new GridLayout(row,col));
               for (int i = 0; i < row; i++)
                    for (int j = 0; j < col; j++)
                         JLabel color = new JLabel();
                         color.setOpaque(true);
                         if (gm.getGrid(i,j) == 'O')
                              color.setBackground(Color.GREEN);
                         else if (gm.getGrid(i,j) == 'F')
                              color.setBackground(Color.RED);
                         else if (gm.getGrid(i,j) == 'H')
                              color.setBackground(Color.BLACK);
                         add(color);
          }

something along these lines
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import javax.swing.*;
public class MainFrame2
  private static final String EXIT = "Exit";
  private static final String OPEN = "Open...";
  private static final String START = "Start";
  private JPanel mainPanel = new JPanel();
  private JPanel gridPanel = new JPanel();
  public MainFrame2()
    mainPanel.setPreferredSize(new Dimension(300, 300));
    mainPanel.setLayout(new BorderLayout());
    mainPanel.add(gridPanel, BorderLayout.CENTER);
  public JComponent getPanel()
    return mainPanel;
  public JMenuBar createMenu()
    JMenu sim = new JMenu("Simulator");
    MenuListener menuListener = new MenuListener();
    JMenuItem m = new JMenuItem(OPEN);
    m.addActionListener(menuListener);
    sim.add(m);
    m = new JMenuItem(START);
    m.addActionListener(menuListener);
    sim.add(m);
    sim.addSeparator();
    m = new JMenuItem(EXIT);
    m.addActionListener(menuListener);
    sim.add(m);
    JMenuBar mBar = new JMenuBar();
    mBar.add(sim);
    return mBar;
  private class MenuListener implements ActionListener
    public void actionPerformed(ActionEvent e)
      String actionCommand = e.getActionCommand();
      if (actionCommand.equals(OPEN))
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setDialogTitle("Choose a file");
        //mainPanel.add(fileChooser);
        fileChooser.setVisible(true);
        int result = fileChooser.showOpenDialog(mainPanel);
        if (result == JFileChooser.APPROVE_OPTION)
          File file = fileChooser.getSelectedFile();
          GridMap gm = new GridMap();
          gm.read(file);
          int row = gm.getRow();
          int col = gm.getColumn();
          gridPanel.setLayout(new GridLayout(row, col));
          gridPanel.removeAll();
          for (int i = 0; i < row; i++)
            for (int j = 0; j < col; j++)
              JLabel color = new JLabel();
              color.setOpaque(true);
              if (gm.getGrid(i, j) == 'O')
                color.setBackground(Color.GREEN);
              else if (gm.getGrid(i, j) == 'F')
                color.setBackground(Color.RED);
              else if (gm.getGrid(i, j) == 'H')
                color.setBackground(Color.BLACK);
              gridPanel.add(color);
      else if (actionCommand.equals(START))
        // setVisible(true);
      else if (actionCommand.equals(EXIT))
        Window window = SwingUtilities.getWindowAncestor(mainPanel);
        window.dispose();
  private static void createAndShowGUI()
    MainFrame2 frame2 = new MainFrame2();
    JFrame frame = new JFrame("Fire Saving Simulator");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(frame2.getPanel());
    frame.setJMenuBar(frame2.createMenu());
    frame.pack();
    frame.setResizable(false);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
  public static void main(String[] args)
    javax.swing.SwingUtilities.invokeLater(new Runnable()
      public void run()
        createAndShowGUI();
}

Similar Messages

  • Setting a jpanel as a background image

    i have managed to load the image into a jpanel but now need to know how to set the jpanel as a background image, to allow my jbuttons and textfields to be seen over the top

    that statement is unbeleivably true.
    right, heres my two classes, the first class is where i created the image
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.* ;
    import java.io.*;
    import javax.imageio.*;
    public class EmailBackgroundImage extends JComponent
    public void paint (Graphics g)
    File bkgdimage = new File ("background.jpg");
    Image imagebg = createImage ( 250,300 );
    try {
    imagebg = ImageIO.read(bkgdimage);
    catch (IOException e)
    g.drawImage(imagebg, 0, 0,null,null);
    this next class is where i'm trying to make the background
    youll notice remnants of my current attempt to create the background image.
    in its current state it does compile
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.* ;
    import java.sql.*;
    import java.util.*;
    import java.awt.color.*;
    public class emailFrontpage extends JFrame implements ActionListener
    JLabel FirstNameLabel = new JLabel("First Name");
    JLabel LastNameLabel = new JLabel("Last Name");
    JLabel EmailLabel = new JLabel("Email Address");
    JTextField FirstNameText = new JTextField( 10 );
    JTextField LastNameText = new JTextField( 10 );
    JTextField EmailAddressText = new JTextField( 20 );
    JPanel panel1 = new JPanel();
    JPanel panel2 = new JPanel();
    JPanel panel3 = new JPanel();
    JPanel panel4 = new JPanel();
    JPanel panel5 = new JPanel();
    JPanel image = new JPanel();
    JButton Enterbutton = new JButton("Enter Details");
    JButton Logon = new JButton("Log on");
    EmailBackgroundImage myimage;
    EmailEdit editEmp;
    emailFrontpage()
    getContentPane().setLayout( new BoxLayout( getContentPane(), BoxLayout.Y_AXIS ));
    myimage = new EmailBackgroundImage();
    image.add(myimage);
    myimage.setSize(250,300);
    image.setOpaque( false );
    FirstNameLabel.setForeground(Color.WHITE);
    LastNameLabel.setForeground(Color.WHITE);
    EmailLabel.setForeground(Color.WHITE);
    panel1.add(Logon);
    panel2.add(FirstNameLabel); panel2.add(FirstNameText);
    panel3.add(LastNameLabel); panel3.add(LastNameText);
    panel4.add(EmailLabel); panel4.add(EmailAddressText);
    panel5.add(Enterbutton);
    getContentPane().add(image);
    getContentPane().add(panel1);
    getContentPane().add(panel2);
    getContentPane().add(panel3);
    getContentPane().add(panel4);
    getContentPane().add(panel5);
    // .setBackground( Color.black )
    Enterbutton.addActionListener( this );
    Logon.addActionListener( this );
    Enterbutton.setActionCommand( "ENTERBUTTONPRESSED" );
    Logon.setActionCommand( "LOGONBUTTONPRESSED" );
    setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE );
    editEmp = new EmailEdit();
    public void actionPerformed( ActionEvent evt)
    if ( evt.getActionCommand().equals("LOGONBUTTONPRESSED") )
    emailLogonpage emaillogon = new emailLogonpage();
    emaillogon.setSize( 250, 300 );
    emaillogon.setVisible( true );
    emaillogon.setResizable(false);
    setVisible(false);
    else
    String newFN = FirstNameText.getText();
    String newLN = LastNameText.getText();
    String newEA = EmailAddressText.getText();
    editEmp.addNewEmail(newFN, newLN, newEA);
    setVisible(false);
    emailFrontpage emailfront = new emailFrontpage();
    emailfront.setSize( 250, 300 );
    emailfront.setVisible( true );
    emailfront.setResizable(false);
    public static void main ( String[] args )
    emailFrontpage emailfront = new emailFrontpage();
    emailfront.setSize( 250, 300 );
    emailfront.setVisible( true );
    emailfront.setResizable(false);
    }

  • Refresh Rate Setting

    I have a LCD monitor that has some weird lines through it when the refresh rate i set to 59.9. When you change it to 75 everything is fine. I was wondering what you can do on a Mac Pro with the ATI Radeon HD 2600 Xt video card in order to get the refresh rate to 75 hertz if all the system preferences will only let you select 59.9 hertz ?

    Try switchResX
    <http://www.madrau.com>
    or DisplayConfigX
    <http://www.3dexpress.de>

  • Pivot - Refresh Manual setting in Hyperion Intreactive Reporting 9.3.1

    Hi All,
    Can anyone please tell me if there is any performance issue with the pivot setting to manual refresh?
    Thanks
    Ujjawal

    Hi All,
    I got the solution of the problem. The manual Refresh is helpful when we are dealing with more than 2 or 3 pivot sections and all of them are not visible at a time. Also it depends on the size of the pivot, if size of the pivot is not so large then we can go for After Process option.
    Thanks
    Ujjawal

  • Refresh ALV & set focus

    Hi,
       I have a refresh option on my screen. It will bring latest data from database. After displaying data in ALV and scrolling down (lets assume scrolled down 10 records). if I select refresh, I am reloading data to ALV. But focus is going to first record. I have again scrool down to 11th record to check the data. How I can set focus to 11th record after repopulating data on ALV. I am using classes for ALV.
    I will appriciate any inputs.
    Regards,
    Venkat.

    Hi,
    Check this example of using the method set_current_cell_via_id.
        DATA: ROWNO TYPE LVC_S_ROID.
        ROWNO-ROW_ID = 25.
    Set the focus on the row number 25.
        CALL METHOD <b>grid1->set_current_cell_via_id</b>
          EXPORTING
            IS_ROW_NO    = rowno.
    Hope this helps..
    THanks,
    Naren

  • Setting a JPanel on an event

    How would you set a blank JPanel to an existing JPanel extention class at an event?

    public class Test extends javax.swing.JFrame {
        public Test() {
            initComponents();
        /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">
        private void initComponents() {
            jButton1 = new javax.swing.JButton();
            jButton2 = new javax.swing.JButton();
            jButton3 = new javax.swing.JButton();
            jPanel1 = new javax.swing.JPanel();
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            jButton1.setText("jButton1");
            jButton1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jButton1ActionPerformed(evt);
            jButton2.setText("jButton2");
            jButton3.setText("jButton3");
            javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
            jPanel1.setLayout(jPanel1Layout);
            jPanel1Layout.setHorizontalGroup(
                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGap(0, 482, Short.MAX_VALUE)
            jPanel1Layout.setVerticalGroup(
                jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGap(0, 371, Short.MAX_VALUE)
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addGroup(layout.createSequentialGroup()
                            .addComponent(jButton1)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(jButton2)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(jButton3)))
                    .addContainerGap())
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jButton1)
                        .addComponent(jButton2)
                        .addComponent(jButton3))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addContainerGap())
            pack();
        }// </editor-fold>
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
            // TODO add your handling code here:
        * @param args the command line arguments
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new Test().setVisible(true);
        // Variables declaration - do not modify
        private javax.swing.JButton jButton1;
        private javax.swing.JButton jButton2;
        private javax.swing.JButton jButton3;
        private javax.swing.JPanel jPanel1;
        // End of variables declaration
    }

  • Refresh rate set wrong, mini wont work with TV anymore

    I have a Mac mini hooked to my conventional TV. I tried setting the refresh rate to 58Hz. I wanted to see if it made the picture any better. The image lost all vertical sync and the image rolls very fast. I thought maybe a confirm dialog box would switch it back to 60Hz after a set time. It didn't
    I tried putting it to sleep an waking it. I pulled the plug and restarted it. I reset the PRAM. The mini always switches to the bad refresh rate after start up.
    I hooked the mini up to my 23" Cinema Display. Then I can use it fine. However, there was no way to channge the TV settings. I hooked it back up to the TV and it still wouldn't work.
    So now I have a mac mini that wont work with a TV. The only thing I want to use it with. The only thing I can think is a last resort. To erase the hard drive and re install Mac OSX from scratch.
    Is there anything I can do short of reformating the thing? There really should be a timed out dialog box to confirm the setting, al la (dare I say) Windows XP.

    This is a real Catch-22 that has caught a bunch of us. If Apple wants lots of naive users to hook these up to their TVs as media centers, they need to have the kind of recovery mechanism you suggest. In the meantime, when I had the same problem and posted, there were lots of useful suggestions in this thread:
    http://discussions.apple.com/message.jspa?messageID=1913178#1913178

  • Set size JPanel inside a JFrame

    I�m trying to set the size of a custom JPanel inside of a custom JFrame
    my code looks like this
    public class myFrame extends JFrame
        public myFrame()
         //This set the size of JFrame but i dont want this
            //setSize(300,600);
            //add panel to frame
            MyPanel panel = new myPanel();
            Container contentPane = getContentPane();
            contentPane.add(panel);
    class MyPanel extends JPanel
         public MyPanel()
              setSize(300, 600); //This don�t work, why??
              validate();
    }Why wont setSize(300, 600) work inside class myPanel ???

    @Op
    You need to read a tutorial on layout managers. It looks like you don't know how they work.
    The panel should call setPreferredSize, and the frame should call pack just before you are displaying the frame.
    Kaj

  • Small problem with meta refresh and setting url

    I'm using the following line of code in my jsp.
    <meta http-equiv="refresh" content="<c:out value='${pageContext.session.maxInactiveInterval+60}'/>">This works fine in that 60 second after the session times out the refresh is called. This then goes into my action class and checks to see if my user object is still in session. It does not find it and forwards it to my login page with a message saying the session timed out.
    this works just fine
    Now instead of this happening I want to forward to an error page.
    so I can add a url into the content section of the tab... but when I try to use a
    <c:out value='${pageContext.request.contextPath}'/>this evaluates to nothing.. so that then the forward is to /sessionTimoutError.jsp instead of /appName/jsp/sessionTimeoutError.jsp.
    So my question is more of a verification. Is it true then that when the session times out it has absolutely nothing to do with struts and java.. and that when the refresh actually gets called and forwards it back to the logoff page that I've in effect created a new session that will timeout in 60 minutes and call a refresh in 61minutes?
    So the only way I can think of forwarding to the other page would be to change the forward in my action class... but changing this is not worth modifying all the action classes.. and I can't just change the definition of the forward since other places use that forward and I don't want to change them either...
    any othe ways anyone could think of doing this without hardcoding any url's in?

    Is it true then that when the session times out it has absolutely nothing to do with struts and java.Nothing to do with Struts, it's about JSP/servlet stuff specifically.
    <meta http-equiv="refresh" content="61; url=/timeout.html">that's the proper format, so you can dynamically write whatever URL you want.
    and that when the refresh actually gets called and forwards it back to the logoff pageOnly if the page that's reloaded checks for the valid login info and forwards. This is a common way to do it, of course.

  • Setting a JPanel alignment

    hi all,
    I'm using a BorderLayout for my simply application.
    I have created a JPanel that contains two buttons, as follows:
    JPanel pannello_pulsanti=new JPanel();
    pannello_pulsanti.setLayout(new BoxLayout(pannello_pulsanti, BoxLayout.LINE_AXIS));
    salva.setPreferredSize(new Dimension(100, 20));
    salva.setMaximumSize(new Dimension(100, 20));
    reset.setPreferredSize(new Dimension(100, 20));
    reset.setMaximumSize(new Dimension(100, 20));
    pannello_pulsanti.add(salva);
    pannello_pulsanti.add(Box.createRigidArea(new Dimension(0, 5)));
    pannello_pulsanti.add(reset);I had in mind to put the JPanel inside the "PAGE_END" location, and I did it.
    the problem is that the panel has a left alignment, while I want a center alignment for it (I tried to change its alignment with setAlignmentX method, but it doesn't work).
    can anyone help me in solving this problem?
    thanks,
    varying

    import java.awt.*;
    import javax.swing.*;
    public class CenteringComponents
        public static void main(String[] args)
            JButton button1 = new JButton("Button 1");
            JButton button2 = new JButton("Button 2");
            Box centerBox = Box.createHorizontalBox();
            centerBox.add(Box.createHorizontalGlue());
            centerBox.add(button1);
            centerBox.add(Box.createHorizontalGlue());
            centerBox.add(button2);
            centerBox.add(Box.createHorizontalGlue());
            JButton button3 = new JButton("Button 3");
            JButton button4 = new JButton("Button 4");
            Box southBox = Box.createHorizontalBox();
            southBox.add(Box.createHorizontalGlue());
            southBox.add(button3);
            southBox.add(Box.createHorizontalGlue());
            southBox.add(button4);
            southBox.add(Box.createHorizontalGlue());
            JFrame f = new JFrame();
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.getContentPane().add(centerBox);
            f.getContentPane().add(southBox, BorderLayout.PAGE_END);
            f.setSize(400,300);
            f.setLocation(200,200);
            f.setVisible(true);
    }

  • 就是希望我按f5刷新和使用在地址栏按enter刷新的效果一样,如果设置,如果做 (translation by Google: Hope I press f5 to refresh and press enter in the address bar to use the same effect as refresh, if set, if you do)

    就是希望我按f5刷新和使用在地址栏按enter刷新的效果一样,如果设置,如果做

    我的邮箱[email protected]

  • How to get iterator to set the row key programmatically after a refresh

    I have a master detail page as master form with navigation and a detail table. When i create a new master record in a specific form i want to return to the master detail after the cache is refreshed and set the currency (selected row) to the last row.
    I override the persistEntity action method and get the bindings and bindingOperation but i didn't find a way to get the iterator to set it to the last row (the new inserted row).
    Any idea is welcome ?
    Thanks for help

    found it in SRDemo ... for the ones that will have same difficulty to find it !
    public String cancelButton_action() {
    //Reset the product list to the first item
    DCIteratorBinding productIter =
    ((DCBindingContainer)getBindings()).findIteratorBinding("findAllProductIter");
    productIter.setCurrentRowIndexInRange(0);
    //Navigate back to the list page
    return "GlobalHome";
    }

  • Determine preferred size to be set for the JPanel attached to JScrollBar

    Determine what preferred size to be set for the JPanel attached to JScrollBar.
    Hello all, I am having a JPanel, where new components will be added into it during run-time. When there are too many components inside the JPanel, I need to re-set the JPanel preferred size so that the JScrollBar is scrollable.
    I was wondering what is the good method to determine the preferred size of JPanel during runtime?
    Currently, I am using
    myJPanel.setPreferredSize(new Dimension(
    numberOfNewComponent * preferred width of each component,
    numberOfNewComponent * preferred height of each component
    ));Is there any better alternative?
    Thank you very much.
    yccheok

    Usually a container such as JPanel will calculate its own preferred size from its layout manager - calling setPreferredSize is often unnecessary.
    When you add a component to your JPanel its preferred size will change automatically.
    What's wrong with the behaviour when you simply add your JPanel to a JScrollPane and let it manage its own preferred size?
    Hope this helps.

  • Setting the refresh rate on B1 dashboards

    Hello,
    is there any way to modify the refresh rate for the standard SAP B1 dashboards that come with PL12?
    any idea what the default refresh rate is?
    thanks, dan

    Hi Dan,
    Currently, there is no refresh rate setting for dashboard in PL12. You could request it in the SBO product development collaboration forum.
    I think it is because the report is for dashboard SAP B1. Dashboard is management report and is not daily operational report. No need to use refresh rate.  Probably, when run it in the excelcius, you can set it. I am not sure but you may check it
    JiMM

  • How to open a report without refreshing  and sending some param value

    we have a summary report which has links to the detail report.For example the summary report has data like
    Countries        EmployeeCount
    UK                5
    US                6
    China                7
    Total                18
    When we click on China it must show the Employees whose country is China (detail report) When we click on Total it shows Employee of all countries UK,US,China...
    Now when we run the summary report online say at 5:10 it shows the staus of countries at 5:10.Say the report is open while an employee of china is moved from China to Uk.But when we open the detail report it shows China count as 6 which should actually be 7 according to the summary report run time.
    A similar problem exist when we schedule the report .When we schedule the summary report and detail report at same time..And then try to open the scheduled instance of detail report from summary scheduled instance ,It only works fine if no parameter is passed to openDocument url.
    Say suppose I click China on summary report the Value China should be passed to detail report as Country.But whenever we try to open a scheduled instance of Detail Report along with a parameter using openDocument Url.It refreshes the whole data even though refresh is set to 'N'.So the scheduled data is lost..Even if we try for Drillfilters in detail Report we cannot set it at runtime using open document Url.

    Mihail - I detailed a couple of approaches here: Re: Application Link
    Scott

Maybe you are looking for

  • Emulator hangs when VPN used

    Running WTK2.5.1 on Linux Fedora Core 6, kernel 2.6.20, with JDK 1.5.0 (but this has happened with different WTK, Linux, kernel, JDK too). Using Cisco Systems VPN Client Version 4.8.00. The emulator hangs whenever the VPN is active. The emulator will

  • HELP FIREWIRE TO USB

    Hey all - I have an old external hard drive with FIRE WIRE ports only (has all my songs ) I now have the Macbook Air with USB Ports only!!! HOW DO I GET MY SONGS!!!! THANKS!!!

  • Redirect to another website when I share my Network

    Hi, When I am with my friends, I often share my network for they can connect to my 4G. But I have not an unlimited data. So, when they go on Youtube for exemple, I wish they are redirected to an another website. I have thinked to modify the hosts fil

  • Freezing phone and non working keyboard

    I just got my first Iphone, its the 3GS. Everything is good with it except that every once in awhile, certain parts of the screen (specifically when using the keyboard) stop working. I woud try and type a certain letter and it wont work, but the othe

  • Configuration documentation

    Hi all, Can anyone who got very good experiance in configuring WLC & LAP present a documentation on following aspects: 1. Configure the Wireless LAN Controller for Basic Operation and Registration of LAP to the Controller. 2. Implementation of Vlans