Avatar billede banielsen Nybegynder
13. juli 2004 - 20:42 Der er 14 kommentarer og
1 løsning

hyperlink til "menuer" i java

Hej
Er der nogen af jer som ved hvordan man laver hyperlink i Java.
Det skal ikke være hyperlink til internettet, men til at "åbne" "menuer". F.eks.

menu (dette skal være et understreget hyperlink)

når man så klikker på menu, kommer følgende frem:

menu
  - menutekst1
  - menutekst2
  - menutekst3

på forhånd tak
Avatar billede trp79 Nybegynder
14. juli 2004 - 11:11 #1
Du kunne vel fx lave din menu i et JTree og så få mousecusoren til at skifte til en hånd når den er i JTree't. Når der så klikkes engang på et element i menuen kan du fx bruge en BrowserLauncher klasse til at state standard browseren på computeren med.
Avatar billede trp79 Nybegynder
14. juli 2004 - 11:13 #2
Denne BrowserLauncher klasse er meget nem at bruge - se hvordan den bruges aller nederst:

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class BrowserLauncher {
    private static int jvm;
    private static Object browser;
    private static boolean loadedWithoutErrors;
    private static Class mrjFileUtilsClass;
    private static Class mrjOSTypeClass;
    private static Class macOSErrorClass;
    /** The com.apple.MacOS.AEDesc class */
    private static Class aeDescClass;
    /** The <init>(int) method of com.apple.MacOS.AETarget */
    private static Constructor aeTargetConstructor;
    /** The <init>(int, int, int) method of com.apple.MacOS.AppleEvent */
    private static Constructor appleEventConstructor;
    /** The <init>(String) method of com.apple.MacOS.AEDesc */
    private static Constructor aeDescConstructor;
    /** The findFolder method of com.apple.mrj.MRJFileUtils */
    private static Method findFolder;
    /** The getFileType method of com.apple.mrj.MRJOSType */
    private static Method getFileType;
    /** The makeOSType method of com.apple.MacOS.OSUtils */
    private static Method makeOSType;
    /** The putParameter method of com.apple.MacOS.AppleEvent */
    private static Method putParameter;
    /** The sendNoReply method of com.apple.MacOS.AppleEvent */
    private static Method sendNoReply;
    /** Actually an MRJOSType pointing to the System Folder on a Macintosh */
    private static Object kSystemFolderType;
    /** The keyDirectObject AppleEvent parameter type */
    private static Integer keyDirectObject;
    /** The kAutoGenerateReturnID AppleEvent code */
    private static Integer kAutoGenerateReturnID;
    /** The kAnyTransactionID AppleEvent code */
    private static Integer kAnyTransactionID;
    /** JVM constant for MRJ 2.0 */
    private static final int MRJ_2_0 = 0;
    /** JVM constant for MRJ 2.1 or later */
    private static final int MRJ_2_1 = 1;
    /** JVM constant for any Windows NT JVM */
    private static final int WINDOWS_NT = 2;
    /** JVM constant for any Windows 9x JVM */
    private static final int WINDOWS_9x = 3;
    /** JVM constant for any other platform */
    private static final int OTHER = -1;
    /**
    * The file type of the Finder on a Macintosh.  Hardcoding "Finder" would keep non-U.S. English
    * systems from working properly.
    */
    private static final String FINDER_TYPE = "FNDR";
    /**
    * The creator code of the Finder on a Macintosh, which is needed to send AppleEvents to the
    * application.
    */
    private static final String FINDER_CREATOR = "MACS";
    /** The name for the AppleEvent type corresponding to a GetURL event. */
    private static final String GURL_EVENT = "GURL";
    /**
    * The first parameter that needs to be passed into Runtime.exec() to open the default web
    * browser on Windows.
    */
    private static final String FIRST_WINDOWS_PARAMETER = "/c";
    /** The second parameter for Runtime.exec() on Windows. */
    private static final String SECOND_WINDOWS_PARAMETER = "start";
    /**
    * The shell parameters for Netscape that opens a given URL in an already-open copy of Netscape
    * on many command-line systems.
    */
    private static final String NETSCAPE_OPEN_PARAMETER_START = " -remote 'openURL(";
    private static final String NETSCAPE_OPEN_PARAMETER_END = ")'";
    /**
    * The message from any exception thrown throughout the initialization process.
    */
    private static String errorMessage;
    /**
    * An initialization block that determines the operating system and loads the necessary
    * runtime data.
    */
    static {
        loadedWithoutErrors = true;
        String osName = System.getProperty("os.name");
        if ("Mac OS".equals(osName)) {
            String mrjVersion = System.getProperty("mrj.version");
            String majorMRJVersion = mrjVersion.substring(0, 3);
            try {
                double version = Double.valueOf(majorMRJVersion).doubleValue();
                if (version == 2) {
                    jvm = MRJ_2_0;
                } else if (version >= 2.1) {
                    // For the time being, assume that all post-2.0 versions of MRJ work the same
                    jvm = MRJ_2_1;
                } else {
                    loadedWithoutErrors = false;
                    errorMessage = "Unsupported MRJ version: " + version;
                }
            } catch (NumberFormatException nfe) {
                loadedWithoutErrors = false;
                errorMessage = "Invalid MRJ version: " + mrjVersion;
            }
        } else if (osName.startsWith("Windows")) {
            if (osName.indexOf("9") != -1) {
                jvm = WINDOWS_9x;
            } else {
                jvm = WINDOWS_NT;
            }
        } else {
            jvm = OTHER;
        }

        if (loadedWithoutErrors) {    // if we haven't hit any errors yet
            loadedWithoutErrors = loadClasses();
        }
    }

    /**
    * This class should never be instantiated; this just ensures so.
    */
    private BrowserLauncher() { }

    /**
    * Called by a static initializer to load any classes, fields, and methods required at runtime
    * to locate the user's web browser.
    * @return <code>true</code> if all intialization succeeded
    *            <code>false</code> if any portion of the initialization failed
    */
    private static boolean loadClasses() {
        switch (jvm) {
            case MRJ_2_0:
                try {
                    Class aeTargetClass = Class.forName("com.apple.MacOS.AETarget");
                    macOSErrorClass = Class.forName("com.apple.MacOS.MacOSError");
                    Class osUtilsClass = Class.forName("com.apple.MacOS.OSUtils");
                    Class appleEventClass = Class.forName("com.apple.MacOS.AppleEvent");
                    Class aeClass = Class.forName("com.apple.MacOS.ae");
                    aeDescClass = Class.forName("com.apple.MacOS.AEDesc");

                    aeTargetConstructor = aeTargetClass.getDeclaredConstructor(new Class [] { int.class });
                    appleEventConstructor = appleEventClass.getDeclaredConstructor(new Class[] { int.class, int.class, aeTargetClass, int.class, int.class });
                    aeDescConstructor = aeDescClass.getDeclaredConstructor(new Class[] { String.class });

                    makeOSType = osUtilsClass.getDeclaredMethod("makeOSType", new Class [] { String.class });
                    putParameter = appleEventClass.getDeclaredMethod("putParameter", new Class[] { int.class, aeDescClass });
                    sendNoReply = appleEventClass.getDeclaredMethod("sendNoReply", new Class[] { });

                    Field keyDirectObjectField = aeClass.getDeclaredField("keyDirectObject");
                    keyDirectObject = (Integer) keyDirectObjectField.get(null);
                    Field autoGenerateReturnIDField = appleEventClass.getDeclaredField("kAutoGenerateReturnID");
                    kAutoGenerateReturnID = (Integer) autoGenerateReturnIDField.get(null);
                    Field anyTransactionIDField = appleEventClass.getDeclaredField("kAnyTransactionID");
                    kAnyTransactionID = (Integer) anyTransactionIDField.get(null);
                } catch (ClassNotFoundException cnfe) {
                    errorMessage = cnfe.getMessage();
                    return false;
                } catch (NoSuchMethodException nsme) {
                    errorMessage = nsme.getMessage();
                    return false;
                } catch (NoSuchFieldException nsfe) {
                    errorMessage = nsfe.getMessage();
                    return false;
                } catch (IllegalAccessException iae) {
                    errorMessage = iae.getMessage();
                    return false;
                }
                break;
            case MRJ_2_1:
                try {
                    mrjFileUtilsClass = Class.forName("com.apple.mrj.MRJFileUtils");
                    mrjOSTypeClass = Class.forName("com.apple.mrj.MRJOSType");
                    Field systemFolderField = mrjFileUtilsClass.getDeclaredField("kSystemFolderType");
                    kSystemFolderType = systemFolderField.get(null);
                    findFolder = mrjFileUtilsClass.getDeclaredMethod("findFolder", new Class[] { mrjOSTypeClass });
                    getFileType = mrjFileUtilsClass.getDeclaredMethod("getFileType", new Class[] { File.class });
                } catch (ClassNotFoundException cnfe) {
                    errorMessage = cnfe.getMessage();
                    return false;
                } catch (NoSuchFieldException nsfe) {
                    errorMessage = nsfe.getMessage();
                    return false;
                } catch (NoSuchMethodException nsme) {
                    errorMessage = nsme.getMessage();
                    return false;
                } catch (SecurityException se) {
                    errorMessage = se.getMessage();
                    return false;
                } catch (IllegalAccessException iae) {
                    errorMessage = iae.getMessage();
                    return false;
                }
                break;
        }
        return true;
    }

    /**
    * Attempts to locate the default web browser on the local system.  Caches results so it
    * only locates the browser once for each use of this class per JVM instance.
    * @return The browser for the system.  Note that this may not be what you would consider
    *            to be a standard web browser; instead, it's the application that gets called to
    *            open the default web browser.  In some cases, this will be a non-String object
    *            that provides the means of calling the default browser.
    */
    private static Object locateBrowser() {
        if (browser != null) {
            return browser;
        }
        switch (jvm) {
            case MRJ_2_0:
                try {
                    Integer finderCreatorCode = (Integer) makeOSType.invoke(null, new Object[] { FINDER_CREATOR });
                    Object aeTarget = aeTargetConstructor.newInstance(new Object[] { finderCreatorCode });
                    Integer gurlType = (Integer) makeOSType.invoke(null, new Object[] { GURL_EVENT });
                    Object appleEvent = appleEventConstructor.newInstance(new Object[] { gurlType, gurlType, aeTarget, kAutoGenerateReturnID, kAnyTransactionID });
                    // Don't set browser = appleEvent because then the next time we call
                    // locateBrowser(), we'll get the same AppleEvent, to which we'll already have
                    // added the relevant parameter. Instead, regenerate the AppleEvent every time.
                    // There's probably a way to do this better; if any has any ideas, please let
                    // me know.
                    return appleEvent;
                } catch (IllegalAccessException iae) {
                    browser = null;
                    errorMessage = iae.getMessage();
                    return browser;
                } catch (InstantiationException ie) {
                    browser = null;
                    errorMessage = ie.getMessage();
                    return browser;
                } catch (InvocationTargetException ite) {
                    browser = null;
                    errorMessage = ite.getMessage();
                    return browser;
                }
            case MRJ_2_1:
                File systemFolder;
                try {
                    systemFolder = (File) findFolder.invoke(null, new Object[] { kSystemFolderType });
                } catch (IllegalArgumentException iare) {
                    browser = null;
                    errorMessage = iare.getMessage();
                    return browser;
                } catch (IllegalAccessException iae) {
                    browser = null;
                    errorMessage = iae.getMessage();
                    return browser;
                } catch (InvocationTargetException ite) {
                    browser = null;
                    errorMessage = ite.getTargetException().getClass() + ": " + ite.getTargetException().getMessage();
                    return browser;
                }
                String[] systemFolderFiles = systemFolder.list();
                // Avoid a FilenameFilter because that can't be stopped mid-list
                for(int i = 0; i < systemFolderFiles.length; i++) {
                    try {
                        File file = new File(systemFolder, systemFolderFiles[i]);
                        if (!file.isFile()) {
                            continue;
                        }
                        Object fileType = getFileType.invoke(null, new Object[] { file });
                        if (FINDER_TYPE.equals(fileType.toString())) {
                            browser = file.toString();    // Actually the Finder, but that's OK
                            return browser;
                        }
                    } catch (IllegalArgumentException iare) {
                        browser = browser;
                        errorMessage = iare.getMessage();
                        return null;
                    } catch (IllegalAccessException iae) {
                        browser = null;
                        errorMessage = iae.getMessage();
                        return browser;
                    } catch (InvocationTargetException ite) {
                        browser = null;
                        errorMessage = ite.getTargetException().getClass() + ": " + ite.getTargetException().getMessage();
                        return browser;
                    }
                }
                browser = null;
                break;
            case WINDOWS_NT:
                browser = "cmd.exe";
                break;
            case WINDOWS_9x:
                browser = "command.com";
                break;
            case OTHER:
            default:
                browser = "netscape";
                break;
        }
        return browser;
    }

    /**
    * Attempts to open the default web browser to the given URL.
    * @param url The URL to open
    * @throws IOException If the web browser could not be located or does not run
    */
    public static void openURL(String url) throws IOException {
        if (!loadedWithoutErrors) {
            throw new IOException("Exception in finding browser: " + errorMessage);
        }
        Object browser = locateBrowser();
        if (browser == null) {
            throw new IOException("Unable to locate browser: " + errorMessage);
        }
        switch (jvm) {
            case MRJ_2_0:
                Object aeDesc = null;
                try {
                    aeDesc = aeDescConstructor.newInstance(new Object[] { url });
                    putParameter.invoke(browser, new Object[] { keyDirectObject, aeDesc });
                    sendNoReply.invoke(browser, new Object[] { });
                } catch (InvocationTargetException ite) {
                    throw new IOException("InvocationTargetException while creating AEDesc: " + ite.getMessage());
                } catch (IllegalAccessException iae) {
                    throw new IOException("IllegalAccessException while building AppleEvent: " + iae.getMessage());
                } catch (InstantiationException ie) {
                    throw new IOException("InstantiationException while creating AEDesc: " + ie.getMessage());
                } finally {
                    aeDesc = null;    // Encourage it to get disposed if it was created
                    browser = null;    // Ditto
                }
                break;
            case MRJ_2_1:
                Runtime.getRuntime().exec(new String[] { (String) browser, url } );
                break;
            case WINDOWS_NT:
            case WINDOWS_9x:
                Runtime.getRuntime().exec(new String[] { (String) browser, FIRST_WINDOWS_PARAMETER,
                                                                    SECOND_WINDOWS_PARAMETER, url });
                break;
            case OTHER:
                // Assume that we're on Unix and that Netscape is installed

                // First, attempt to open the URL in a currently running session of Netscape
                Process process = Runtime.getRuntime().exec((String) browser +
                                                            NETSCAPE_OPEN_PARAMETER_START +    url +
                                                            NETSCAPE_OPEN_PARAMETER_END);
                try {
                    int exitCode = process.waitFor();
                    if (exitCode != 0) {    // if Netscape was not open
                        Runtime.getRuntime().exec(new String[] { (String) browser, url });
                    }
                } catch (InterruptedException ie) {
                    throw new IOException("InterruptedException while launching browser: " + ie.getMessage());
                }
                break;
            default:
                // This should never occur, but if it does, we'll try the simplest thing possible
                Runtime.getRuntime().exec(new String[] { (String) browser, url });
                break;
        }
    }
}


Du kan så åbne en side med:
try{
  BrowserLauncher.openURL(textfieldSite.getText());
  //BrowserLauncher.openURL("http://www.exp.dk");
  }
catch(Exception e){System.out.println(e);}
Avatar billede trp79 Nybegynder
14. juli 2004 - 11:16 #3
Jeg poster lige et eks på hvordan det kunne se ud med denne menu også....
Avatar billede banielsen Nybegynder
14. juli 2004 - 11:25 #4
det var bare helt perfekt. Tak. :-)
Avatar billede banielsen Nybegynder
14. juli 2004 - 11:26 #5
du kan lige ligge et svar... så skal du få dine point...:-)
Avatar billede trp79 Nybegynder
14. juli 2004 - 11:31 #6
Menuen bruger dog ikke browserlauncher klassen.

*****************************Bytteseddelannonce*********************************
import javax.swing.*;
import java.awt.Dimension;
import javax.swing.JLabel;
import java.awt.Rectangle;
import java.awt.Font;
import javax.swing.JSeparator;
import javax.swing.JCheckBox;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JButton;
public class Bytteseddelannonce extends JPanel
{
  private JLabel jLabel2 = new JLabel();


  private JLabel jLabel1 = new JLabel();
  private JSeparator jSeparator1 = new JSeparator();
  private JCheckBox jCheckBox2 = new JCheckBox();
  private JCheckBox jCheckBox1 = new JCheckBox();
  private JLabel jLabel3 = new JLabel();
  private JLabel jLabel4 = new JLabel();
  private JLabel jLabel5 = new JLabel();
  private JTextField jTextField1 = new JTextField();
  private JTextField jTextField2 = new JTextField();
  private JLabel jLabel6 = new JLabel();
  private JCheckBox jCheckBox3 = new JCheckBox();
  private JCheckBox jCheckBox4 = new JCheckBox();
  private JCheckBox jCheckBox5 = new JCheckBox();
  private JCheckBox jCheckBox6 = new JCheckBox();
  private JCheckBox jCheckBox7 = new JCheckBox();
  private JCheckBox jCheckBox8 = new JCheckBox();
  private JLabel jLabel7 = new JLabel();
  private JLabel jLabel8 = new JLabel();
  private JLabel jLabel9 = new JLabel();
  private JCheckBox jCheckBox9 = new JCheckBox();
  private JCheckBox jCheckBox10 = new JCheckBox();
  private JCheckBox jCheckBox11 = new JCheckBox();
  private JLabel jLabel10 = new JLabel();
  private JComboBox jComboBox1 = new JComboBox();
  private JButton jButton1 = new JButton();
  public Bytteseddelannonce()
  {
    try
    {
      jbInit();
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }

  }

  private void jbInit() throws Exception
  {
    this.setSize(new Dimension(845, 635));
    this.setLayout(null);
    jLabel2.setText("Type");
    jLabel2.setBounds(new Rectangle(35, 80, 60, 15));
    jLabel2.setFont(new Font("Dialog", 1, 11));
    jLabel1.setText("Annoncer bytning");
    jLabel1.setBounds(new Rectangle(35, 30, 240, 35));
    jLabel1.setFont(new Font("Dialog", 3, 15));
    jSeparator1.setBounds(new Rectangle(35, 60, 810, 5));
    jCheckBox2.setText("Salg");
    jCheckBox2.setBounds(new Rectangle(45, 120, 80, 25));
    jCheckBox1.setText("Køb");
    jCheckBox1.setBounds(new Rectangle(45, 95, 80, 25));
    jLabel3.setText("Dato/periode");
    jLabel3.setBounds(new Rectangle(35, 155, 80, 15));
    jLabel3.setFont(new Font("Dialog", 1, 11));
    jLabel4.setText("Fra");
    jLabel4.setBounds(new Rectangle(45, 185, 35, 15));
    jLabel5.setText("Til");
    jLabel5.setBounds(new Rectangle(45, 210, 35, 15));
    jTextField1.setText("16-06-2004");
    jTextField1.setBounds(new Rectangle(75, 180, 80, 20));
    jTextField2.setText("16-06-2004");
    jTextField2.setBounds(new Rectangle(75, 205, 80, 20));
    jLabel6.setText("Bytning af alle(udfyldes kun hvis perioden er længere end 1 dag):");
    jLabel6.setBounds(new Rectangle(45, 235, 600, 15));
    jCheckBox3.setText("Mandage");
    jCheckBox3.setBounds(new Rectangle(45, 250, 80, 25));
    jCheckBox4.setText("Tirsdage");
    jCheckBox4.setBounds(new Rectangle(45, 275, 80, 25));
    jCheckBox5.setText("Onsdage");
    jCheckBox5.setBounds(new Rectangle(145, 250, 80, 25));
    jCheckBox6.setText("Torsdage");
    jCheckBox6.setBounds(new Rectangle(145, 275, 80, 25));
    jCheckBox7.setText("Fredage");
    jCheckBox7.setBounds(new Rectangle(240, 250, 80, 25));
    jCheckBox8.setText("Søndage");
    jCheckBox8.setBounds(new Rectangle(240, 275, 80, 25));
    jLabel7.setText("Onsdag, 16. juni, 2004");
    jLabel7.setBounds(new Rectangle(160, 180, 130, 20));
    jLabel8.setText("Onsdag, 16. juni, 2004");
    jLabel8.setBounds(new Rectangle(160, 205, 130, 20));
    jLabel9.setText("Tjeneste");
    jLabel9.setBounds(new Rectangle(35, 315, 80, 15));
    jLabel9.setFont(new Font("Dialog", 1, 11));
    jCheckBox9.setText("15:00-18:00");
    jCheckBox9.setBounds(new Rectangle(45, 335, 100, 25));
    jCheckBox10.setText("16:30-22:00");
    jCheckBox10.setBounds(new Rectangle(145, 335, 95, 25));
    jCheckBox10.setActionCommand("16:30-22:00");
    jCheckBox11.setText("20:00-23:00");
    jCheckBox11.setBounds(new Rectangle(240, 335, 125, 25));
    jLabel10.setText("Aflønning");
    jLabel10.setBounds(new Rectangle(35, 375, 80, 15));
    jLabel10.setFont(new Font("Dialog", 1, 11));
    jComboBox1.setBounds(new Rectangle(45, 395, 120, 20));
    jButton1.setText("Annoncer");
    jButton1.setBounds(new Rectangle(35, 450, 130, 25));
    jComboBox1.addItem(new String("Lønseddel"));
    jComboBox1.addItem(new String("Privat"));
    this.add(jButton1, null);
    this.add(jComboBox1, null);
    this.add(jLabel10, null);
    this.add(jCheckBox11, null);
    this.add(jCheckBox10, null);
    this.add(jCheckBox9, null);
    this.add(jLabel9, null);
    this.add(jLabel8, null);
    this.add(jLabel7, null);
    this.add(jCheckBox8, null);
    this.add(jCheckBox7, null);
    this.add(jCheckBox6, null);
    this.add(jCheckBox5, null);
    this.add(jCheckBox4, null);
    this.add(jCheckBox3, null);
    this.add(jLabel6, null);
    this.add(jTextField2, null);
    this.add(jTextField1, null);
    this.add(jLabel5, null);
    this.add(jLabel4, null);
    this.add(jLabel3, null);
    this.add(jCheckBox1, null);
    this.add(jCheckBox2, null);
    this.add(jSeparator1, null);
    this.add(jLabel1, null);
    this.add(jLabel2, null);
  }
}
*****************************ByttetypeRenderer*****************************
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;

class ByttetypeRenderer extends DefaultTableCellRenderer {

  private boolean farve;
  private JTable jTable1;
 
  public ByttetypeRenderer( boolean farve, JTable jTable1 ) {
    this.farve = farve;
    this.jTable1 = jTable1;
   
    setHorizontalAlignment( RIGHT );
  }

  public void setValue( Object tekst ) {
    System.out.println("11");
    if ( tekst instanceof String )
    {
      String tekst2 = ((String) tekst);
      System.out.println("22");           
      if ( tekst2.toString().compareTo("Salg")==0)
      {
          System.out.println("33");
          setForeground( Color.red );
          //jTable1.set
      }
      else
      {
        System.out.println("44");
        setForeground(Color.blue);     
      }
      setText(tekst.toString());
    }
    else
    {
      System.out.println("55");
      setText( "Stavefejl" );
    }
  }
}
*****************************ByttetypeRenderer*****************************

*****************************Gui*****************************

import javax.swing.*;
import java.awt.Dimension;
import javax.swing.JLabel;
import java.awt.Rectangle;
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.CardLayout;
import java.awt.FlowLayout;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.Image;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.Component;
import java.awt.event.ItemListener;
import java.awt.Cursor;
import javax.swing.JTree;
import java.awt.SystemColor;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeSelectionModel;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultTreeCellRenderer;

public class Gui extends JFrame
{
  private JLabel jLabel1 = new JLabel();
  private JPanel jPanel1 = new JPanel();
  private JLabel jLabel2 = new JLabel();
  private JLabel jLabel3 = new JLabel();
  private JLabel jLabel4 = new JLabel();
  private JLabel jLabel5 = new JLabel();
  private JPanel jPanel2 = new Startside();
  private ImageIcon imageIcon = new ImageIcon("postlogo1.gif");
  private ImageIcon imgIcon = new ImageIcon(imageIcon.getImage().getScaledInstance(-1,25,Image.SCALE_DEFAULT));
  private JLabel jLabel6 = new JLabel();
  private JPanel jPanel3 = new JPanel();
  private DefaultMutableTreeNode top = new DefaultMutableTreeNode("Menu");
  private DefaultMutableTreeNode info = new DefaultMutableTreeNode("Infomeddelelse");
  private DefaultMutableTreeNode kode = new DefaultMutableTreeNode("Kodeforslag");
  private DefaultMutableTreeNode vagtbytte = new DefaultMutableTreeNode("Vagtbytte");
  private DefaultMutableTreeNode infolæs = new DefaultMutableTreeNode("Læs infomeddelelser(3 nye)");
  private DefaultMutableTreeNode infoskriv = new DefaultMutableTreeNode("Opret infomeddelelse");
  private DefaultMutableTreeNode koderespons = new DefaultMutableTreeNode("Læs respons(1 ny)");
  private DefaultMutableTreeNode kodeskriv = new DefaultMutableTreeNode("Opret kodeforslag");
  private DefaultMutableTreeNode vagtbyttese = new DefaultMutableTreeNode("Se udbudte vagter");
  private DefaultMutableTreeNode vagtbyttelav = new DefaultMutableTreeNode("Opret vagtbytte"); 
  private DefaultMutableTreeNode vagtbyttedirekte = new DefaultMutableTreeNode("Direkte vagtbytte");
  private DefaultMutableTreeNode vagtbytteannonceret = new DefaultMutableTreeNode("Annonceret vagtbytte");
  private JTree jTree1 = new JTree(top);

  public Gui()
  {
    try
    {
      jbInit();
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }

  }
 
  private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
  } 
  public static void main(String[] args)
  {
    Gui gui = new Gui();
    gui.show();
  }

  private void jbInit() throws Exception
  {
    this.setSize(new Dimension(1054, 639));
    this.getContentPane().setLayout(null);

    top.add(info);
    top.add(kode);
    top.add(vagtbytte);
    info.add(infolæs);
    info.add(infoskriv);
    kode.add(koderespons);
    kode.add(kodeskriv);
    vagtbytte.add(vagtbyttese);
    vagtbytte.add(vagtbyttelav);
    vagtbyttelav.add(vagtbyttedirekte);
    vagtbyttelav.add(vagtbytteannonceret);
    jTree1.setForeground(SystemColor.control);
    jTree1.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    DefaultTreeCellRenderer render = (DefaultTreeCellRenderer)jTree1.getCellRenderer();
    jTree1.addMouseListener(new MouseAdapter()
      {
        public void mouseClicked(MouseEvent e)
        {
          jTree1_mouseClicked(e);
        }
      });
    jPanel2.setLayout(null);
    render.setOpaque(true);
    render.setBackground(SystemColor.control);
    for(int i = 0; i < jTree1.getRowCount(); i++){
      jTree1.expandRow(i);
      }
     
    jLabel1.setText("Vagtbytte");
    jLabel1.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
      jLabel1.addMouseListener(new MouseAdapter()
      {
        public void mousePressed(MouseEvent event)
        {
          if (event.getClickCount() == 1)
          {
            // Ved tryk på label
            getContentPane().remove(jPanel2);
            jPanel2 = new Vagtudbud();
            jPanel2.setBounds(new Rectangle(225, 75, 818, 630));
            getContentPane().add(jPanel2);
            getContentPane().validate();  // da du roder med dit layout, som derfor skal valideres igen
            getContentPane().repaint();
           
          }
        }
      });

    jLabel1.setFont(new Font("Dialog", 1, 15));
    jLabel1.setForeground(Color.red);
    jLabel1.setBounds(new Rectangle(605, 5, 80, 20));
    jPanel1.setBounds(new Rectangle(0, 35, 1045, 40));
    jPanel1.setBackground(new Color(221, 217, 208));
    jPanel1.setLayout(null);
    jLabel2.setText("Infomeddelelse");
    jLabel2.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
      jLabel2.addMouseListener(new MouseAdapter()
      {
        public void mousePressed(MouseEvent event)
        {
          if (event.getClickCount() == 1)
          {

          }
        }
      });
    jLabel2.setFont(new Font("Dialog", 1, 15));
    jLabel2.setForeground(Color.red);
    jLabel2.setBounds(new Rectangle(455, 5, 110, 20));
    jLabel3.setText("Kodeforslag");
    jLabel3.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
      jLabel3.addMouseListener(new MouseAdapter()
      {
        public void mousePressed(MouseEvent event)
        {
          if (event.getClickCount() == 1)
          {
            // Ved tryk på knap
            getContentPane().remove(jPanel2);
            jPanel2 = new Opretkodeforslag();
            jPanel2.setBounds(new Rectangle(225, 75, 818, 630));
            getContentPane().add(jPanel2);
            getContentPane().validate();  // da du roder med dit layout, som derfor skal valideres igen
            getContentPane().repaint();
          }
        }
      });
    jLabel3.setFont(new Font("Dialog", 1, 15));
    jLabel3.setForeground(Color.red);
    jLabel3.setBounds(new Rectangle(325, 5, 90, 20));
    jLabel4.setText("Startside");
    jLabel4.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
      jLabel4.addMouseListener(new MouseAdapter()
      {
        public void mousePressed(MouseEvent event)
        {
          if (event.getClickCount() == 1)
          {
            // Ved tryk på knap
            getContentPane().remove(jPanel2);
            jPanel2 = new Startside();
            jPanel2.setBounds(new Rectangle(225, 75, 818, 630));
            getContentPane().add(jPanel2);
            getContentPane().validate();  // da du roder med dit layout, som derfor skal valideres igen
            getContentPane().repaint();
          }
        }
      });
    jLabel4.setFont(new Font("Dialog", 1, 15));
    jLabel4.setForeground(Color.red);
    jLabel4.setBounds(new Rectangle(220, 5, 65, 20));
    jLabel5.setText("Velkommen Finn Hansen (PIA-nr: 23411)");
    jLabel5.setBounds(new Rectangle(20, 5, 295, 20));
    jPanel2.setBounds(new Rectangle(225, 75, 818, 630));
    jLabel6.setFont(new Font("Dialog", 1, 15));
    jLabel6.setForeground(Color.red);
    jLabel6.setBounds(new Rectangle(0, 485, 110, 50));
    jLabel6.setIcon(imgIcon);
    jPanel3.setBounds(new Rectangle(0, 75, 220, 525));
    jPanel3.setLayout(null);
    jTree1.setBounds(new Rectangle(0, 70, 215, 255));
    jTree1.setBackground(SystemColor.control);
    jPanel1.add(jLabel4, null);
    jPanel1.add(jLabel3, null);
    jPanel1.add(jLabel2, null);
    jPanel1.add(jLabel1, null);
    jPanel3.add(jTree1, null);
    jPanel3.add(jLabel6, null);
    this.getContentPane().add(jPanel3, null);
    this.getContentPane().add(jPanel2, null);
    this.getContentPane().add(jLabel5, null);
    this.getContentPane().add(jPanel1, null);

    addWindowListener(new java.awt.event.WindowAdapter() {
    public void windowClosing(java.awt.event.WindowEvent evt)
    {
        exitForm(evt);
    }
    }); 

  }

  private void jTree1_mouseClicked(MouseEvent e)
  {
    if(e.getClickCount() == 1){
      if(jTree1.getLastSelectedPathComponent().toString().compareTo("Læs infomeddelelser(3 nye)")==0)
        System.out.println("3 nye");

      else if(jTree1.getLastSelectedPathComponent().toString().compareTo("Opret infomeddelelse")==0)
      System.out.println("Opret inf...");

      else if(jTree1.getLastSelectedPathComponent().toString().compareTo("Se udbudte vagter")==0)
      {
        getContentPane().remove(jPanel2);
        jPanel2 = new Vagtudbud();
        jPanel2.setBounds(new Rectangle(225, 75, 818, 630));
        getContentPane().add(jPanel2);
        getContentPane().validate();  // da du roder med dit layout, som derfor skal valideres igen
        getContentPane().repaint();
      }

      else if(jTree1.getLastSelectedPathComponent().toString().compareTo("Opret kodeforslag")==0)
      {
        getContentPane().remove(jPanel2);
        jPanel2 = new Opretkodeforslag();
        jPanel2.setBounds(new Rectangle(225, 75, 818, 630));
        getContentPane().add(jPanel2);
        getContentPane().validate();  // da du roder med dit layout, som derfor skal valideres igen
        getContentPane().repaint();
      } 
      else if(jTree1.getLastSelectedPathComponent().toString().compareTo("Annonceret vagtbytte")==0)
      {
        getContentPane().remove(jPanel2);
        jPanel2 = new Bytteseddelannonce();
        jPanel2.setBounds(new Rectangle(225, 75, 818, 630));
        getContentPane().add(jPanel2);
        getContentPane().validate();  // da du roder med dit layout, som derfor skal valideres igen
        getContentPane().repaint();
      } 
    }
  }
}
*****************************Slut Gui*****************************

*****************************MyListCellRenderer*****************************
import javax.swing.*;
import java.awt.*;

class MyListCellRenderer extends javax.swing.JLabel implements javax.swing.ListCellRenderer{
   
    public MyListCellRenderer() {
        super();
        setOpaque(true);
    }

    public java.awt.Component getListCellRendererComponent(JList jList,
                                                Object obj,
                                                int param,
                                                boolean isSelected,
                                                boolean cellFocus) {

        if (isSelected) {
              setBackground(jList.getSelectionBackground());
              setForeground(jList.getSelectionForeground());
        }
        else {
              setBackground(jList.getBackground());
              setForeground(jList.getForeground());
        }

        setIcon( ((MyObject)obj).getIcon() );
        setText( obj.toString());
       
        setFont(jList.getFont());

        return this;
    }
}
*****************************Slut MyListCellRenderer*****************************


*****************************MyObject*****************************
import javax.swing.*;
import java.awt.*;
class MyObject {
    public MyObject() {
    }
   
    public MyObject(String text, ImageIcon icon) {
        this.text = text;
        this.icon = (Icon)icon;
    }
   
    public String toString(){
        return text;
    }
   
    public Icon getIcon(){
        return icon;
    }
   
    private Icon icon;
    private String text;
}
*****************************Slut MyObject*****************************

*****************************Opretkodeforslag*****************************
import javax.swing.*;
import java.awt.Dimension;
import oracle.jdeveloper.layout.BoxLayout2;
import javax.swing.JLabel;
import javax.swing.JCheckBox;
import java.awt.Rectangle;
import java.awt.Font;
import javax.swing.JSplitPane;
import javax.swing.JSeparator;
import javax.swing.JTextField;
import javax.swing.JTextArea;
import javax.swing.JButton;
public class Opretkodeforslag extends JPanel
{

  private JLabel jLabel1 = new JLabel();
  private JSeparator jSeparator1 = new JSeparator();
  private JLabel jLabel2 = new JLabel();
  private JCheckBox jCheckBox1 = new JCheckBox();
  private JCheckBox jCheckBox2 = new JCheckBox();
  private JCheckBox jCheckBox3 = new JCheckBox();
  private JCheckBox jCheckBox4 = new JCheckBox();
  private JLabel jLabel3 = new JLabel();
  private JCheckBox jCheckBox5 = new JCheckBox();
  private JCheckBox jCheckBox6 = new JCheckBox();
  private JLabel jLabel4 = new JLabel();
  private JCheckBox jCheckBox7 = new JCheckBox();
  private JCheckBox jCheckBox8 = new JCheckBox();
  private JLabel jLabel5 = new JLabel();
  private JLabel jLabel6 = new JLabel();
  private JLabel jLabel7 = new JLabel();
  private JLabel jLabel8 = new JLabel();
  private JLabel jLabel9 = new JLabel();
  private JTextField jTextField1 = new JTextField();
  private JTextField jTextField2 = new JTextField();
  private JTextField jTextField3 = new JTextField();
  private JTextField jTextField4 = new JTextField();
  private JLabel jLabel10 = new JLabel();
  private JTextField jTextField5 = new JTextField();
  private JButton jButton1 = new JButton();
  private JCheckBox jCheckBox9 = new JCheckBox();

  public Opretkodeforslag()
  {
    try
    {
      jbInit();
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }

  }

  private void jbInit() throws Exception
  {
    this.setSize(new Dimension(847, 633));
    this.setLayout(null);
    jLabel1.setText("Kodeforslag");
    jLabel1.setBounds(new Rectangle(35, 30, 240, 35));
    jLabel1.setFont(new Font("Dialog", 3, 15));
    jSeparator1.setBounds(new Rectangle(35, 60, 810, 5));
    jLabel2.setText("Kodemode");
    jLabel2.setBounds(new Rectangle(35, 80, 60, 15));
    jLabel2.setFont(new Font("Dialog", 1, 11));
    jCheckBox1.setText("PC");
    jCheckBox1.setBounds(new Rectangle(45, 95, 82, 24));
    jCheckBox2.setText("SEL");
    jCheckBox2.setBounds(new Rectangle(45, 120, 80, 25));
    jCheckBox3.setText("AKS");
    jCheckBox3.setBounds(new Rectangle(45, 145, 80, 25));
    jCheckBox4.setText("HNR");
    jCheckBox4.setBounds(new Rectangle(45, 170, 80, 25));
    jLabel3.setText("Maskinskrevet?");
    jLabel3.setBounds(new Rectangle(35, 230, 90, 15));
    jLabel3.setFont(new Font("Dialog", 1, 11));
    jCheckBox5.setText("Ja");
    jCheckBox5.setBounds(new Rectangle(45, 250, 80, 25));
    jCheckBox6.setText("Nej");
    jCheckBox6.setBounds(new Rectangle(45, 275, 80, 25));
    jLabel4.setText("Fortrykt kuvert?");
    jLabel4.setBounds(new Rectangle(35, 310, 90, 15));
    jLabel4.setFont(new Font("Dialog", 1, 11));
    jCheckBox7.setText("Nej");
    jCheckBox7.setBounds(new Rectangle(45, 355, 80, 25));
    jCheckBox8.setText("Ja");
    jCheckBox8.setBounds(new Rectangle(45, 330, 80, 25));
    jLabel5.setText("Oplysninger");
    jLabel5.setBounds(new Rectangle(205, 80, 80, 15));
    jLabel5.setFont(new Font("Dialog", 1, 11));
    jLabel6.setText("Navn");
    jLabel6.setBounds(new Rectangle(215, 100, 65, 15));
    jLabel7.setText("Adresse");
    jLabel7.setBounds(new Rectangle(215, 125, 65, 15));
    jLabel8.setText("Post nr.");
    jLabel8.setBounds(new Rectangle(215, 150, 65, 15));
    jLabel9.setText("Post box");
    jLabel9.setBounds(new Rectangle(215, 175, 65, 15));
    jTextField1.setBounds(new Rectangle(335, 95, 310, 20));
    jTextField2.setBounds(new Rectangle(335, 120, 310, 20));
    jTextField3.setBounds(new Rectangle(335, 145, 310, 20));
    jTextField4.setBounds(new Rectangle(335, 170, 310, 20));
    jLabel10.setText("Problembeskrivelse");
    jLabel10.setBounds(new Rectangle(215, 200, 115, 15));
    jTextField5.setBounds(new Rectangle(335, 200, 310, 105));
    jButton1.setText("Indsend Kodeforslag");
    jButton1.setBounds(new Rectangle(470, 325, 175, 25));
    jCheckBox9.setText("EXE");
    jCheckBox9.setBounds(new Rectangle(45, 195, 80, 25));
    this.add(jCheckBox9, null);
    this.add(jButton1, null);
    this.add(jTextField5, null);
    this.add(jLabel10, null);
    this.add(jTextField4, null);
    this.add(jTextField3, null);
    this.add(jTextField2, null);
    this.add(jTextField1, null);
    this.add(jLabel9, null);
    this.add(jLabel8, null);
    this.add(jLabel7, null);
    this.add(jLabel6, null);
    this.add(jLabel5, null);
    this.add(jCheckBox8, null);
    this.add(jCheckBox7, null);
    this.add(jLabel4, null);
    this.add(jCheckBox6, null);
    this.add(jCheckBox5, null);
    this.add(jLabel3, null);
    this.add(jCheckBox4, null);
    this.add(jCheckBox3, null);
    this.add(jCheckBox2, null);
    this.add(jCheckBox1, null);
    this.add(jLabel2, null);
    this.add(jSeparator1, null);
    this.add(jLabel1, null);
  }
}
*****************************Slut Opretkodeforslag*****************************

*****************************Startside*****************************

import javax.swing.*;
import java.awt.Dimension;
import javax.swing.JLabel;
import java.awt.Rectangle;
import java.awt.Font;
import java.awt.Color;
import javax.swing.JScrollPane;
import javax.swing.JList;
import javax.swing.event.*; //Bruges til ListSelectionListener
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.text.*;
import java.io.*;
import javax.swing.JTextArea;
import javax.swing.JTree;
public class Startside extends JPanel
{
  private JScrollPane jScrollPane1 = new JScrollPane();
  private DefaultListModel model = new DefaultListModel();
  private JList jList1 = new JList(model);
  private JScrollPane jScrollPane2 = new JScrollPane();
  private JTextArea jTextArea1 = new JTextArea();
  private JLabel jLabel3 = new JLabel();

  public Startside()
  {
    try
    {
      jbInit();
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }

  }

  private void jbInit() throws Exception
  {
    this.setSize(new Dimension(818, 630));
    this.setLayout(null);
    jScrollPane1.setBounds(new Rectangle(150, 70, 535, 205));
    jList1.setBackground(Color.lightGray);
    jScrollPane2.setBounds(new Rectangle(150, 325, 535, 210));
    jTextArea1.setBackground(Color.lightGray);
    jLabel3.setText("Uddybning");
    jLabel3.setBounds(new Rectangle(150, 300, 145, 25));
    jLabel3.setFont(new Font("Dialog", 1, 15));
    jScrollPane2.getViewport().add(jTextArea1, null);
    this.add(jLabel3, null);
    this.add(jScrollPane2, null);
    jScrollPane1.getViewport().add(jList1, null);
    this.add(jScrollPane1, null);
    jList1.setCellRenderer(new MyListCellRenderer());
    model.addElement(new MyObject("Infomeddelelse:    16/6-2004      Tavlemøde aflyst denne uge", new javax.swing.ImageIcon("1.gif")));
    model.addElement(new MyObject("Infomeddelelse:    16/6-2004      Fest hos Ninna på fredag", new javax.swing.ImageIcon("1.gif")));
    model.addElement(new MyObject("Infomeddelelse:    14/6-2004      Ny coach ansat pr 1/7-2004", new javax.swing.ImageIcon("1.gif")));
    model.addElement(new MyObject("Kodeforslag:          13/6-2004      Svend Hansen har besvaret dit kodeforslag", new javax.swing.ImageIcon("1-3.gif")));
    model.addElement(new MyObject("Infomeddelelse:    12/6-2004      Team resultat for uge 22",new javax.swing.ImageIcon("1.gif")));
    model.addElement(new MyObject("Infomeddelelse:    10/6-2004      Tavlemøde aflyst denne uge", new javax.swing.ImageIcon("1.gif")));
    model.addElement(new MyObject("Vagtbytte:                10/6-2004      Din vagt den 19/6-2004 er blevet solgt!", new javax.swing.ImageIcon("1-2.gif")));

    jList1.addMouseListener(new MouseAdapter()
        {
            public void mousePressed(MouseEvent event)
            {
                if( event.getClickCount() == 1 )
                {
          if(jList1.getSelectedIndex()==1)
          {
            jTextArea1.setText("Halløjsa!\nJeg holder fest for vores team på fredag!\nHvis du er interesseret i at spise(grille) med, så ring eller skrive til mig.\nDu skal selv medbringe drikkevare og kød(hvis du skal grille) og godt humør!\nJeg regner med, at vi efterfølgende tager ind til byen,\nmine naboer ikke bliver helt tilfredse ellers.\n\nJeg bor:\nBoghvede vej 43\n2860 Søborg\nTlf: 34411222\nMobil: 23337698\nVi ses forhåbentlig, mvh Ninna");         
          }
          else if(jList1.getSelectedIndex()==3)
          {
            jTextArea1.setText("Hej Finn\nKodeforslaget du postede den 12/6-2004 er nu gennemført.\n\nTak for dit kodeforslag\nMvh Svend Hansen");         
          }         
          else if(jList1.getSelectedIndex()==6)
          {
            jTextArea1.setText("Maria Sørensen fra team 7 har taget din vagt den 19/6-2004\n\nAnnoncen er derfor nu fjernet fra listen med vagtudbud.");         
          }         
          else
          jTextArea1.setText("");
                }
            }
        });

  }
}
*****************************Slut Startside*****************************

*****************************TableElement*****************************
//"Type", "Dato", "Tjeneste", "Udbyder","Aflønning", "Annonceret", "Fjernes", "Byt"
public class TableElement {

  private String type;
  private String dato;
  private String tjeneste;
  private String udbyder;
  private String aflønning;
  private String annonceret;
  private String fjernes;
  private Boolean byt;

    public TableElement(){}
   
    public TableElement(String type, String dato, String tjeneste, String udbyder, String aflønning, String annonceret, String fjernes, Boolean byt) {
        this.type = type;
        this.dato = dato;
        this.tjeneste = tjeneste;
        this.udbyder = udbyder;
        this.aflønning = aflønning;
        this.annonceret = annonceret;
        this.fjernes = fjernes;
        this.byt = byt;
    }

    public void setType(String type) {
        this.type = type;
    }

    public void setDato(String dato) {
        this.dato = dato;
    }

    public void setTjeneste(String tjeneste) {
        this.tjeneste = tjeneste;
    }

    public void setUdbyder(String udbyder) {
        this.udbyder = udbyder;
    }

    public void setAflønning(String aflønning) {
        this.aflønning = aflønning;
    }

    public void setAnnonceret(String annonceret) {
        this.annonceret = annonceret;
    }

    public void setFjernes(String fjernes) {
        this.fjernes = fjernes;
    }

    public void setByt(Boolean byt) {
        this.byt = byt;
    }

    public String getType() {
        return (this.type);
    }

    public String getDato() {
        return (this.dato);
    }

    public String getTjeneste() {
        return (this.tjeneste);
    }

    public String getUdbyder() {
        return (this.udbyder);
    }

    public String getAflønning() {
        return (this.aflønning);
    }

    public String getAnnonceret() {
        return (this.annonceret);
    }

    public String getFjernes() {
        return (this.fjernes);
    }

    public Boolean getByt() {
        return (this.byt);
    }

    public String toString() {

        StringBuffer toString = new StringBuffer();
        toString.append("\nFra Firma = ");
/*      toString.append(firmaFra);
        toString.append("\nTil Firma = ");
        toString.append(firmaTil);
        toString.append("\nStop nr = ");
        toString.append(stopNr);
        toString.append("\nAfstand = ");
        toString.append(afstand);
        toString.append("\nKilde = ");
        toString.append(kilde);
        toString.append("\nSamlet afstand = ");       
        toString.append(samletAfstand);
        toString.append("\nKm pris = ");
        toString.append(kmPris);
        toString.append("\nPris");
        toString.append(pris);
        toString.append("\nSamlet pris = ");
        toString.append(samletPris);
        toString.append("\nOpdater afstand = ");
        toString.append(opdaterAfstand);
        toString.append("\n");
*/
        return new String(toString);
    }
}

*****************************Slut TableElement*****************************

*****************************TableModel*****************************
import javax.swing.table.*;
import javax.swing.table.AbstractTableModel;
import javax.swing.*;
import java.util.ArrayList;

public class TableModel extends AbstractTableModel {
    private String[] columns = { "Type", "Dato", "Tjeneste", "Udbyder","Aflønning", "Annonceret", "Fjernes", "Byt" };
      private ArrayList data;

    public TableModel() {
        data = new ArrayList();
    }

  public int getColumnCount() {
      return columns.length;
  }

  public int getRowCount() {
      return data.size();
  }

  public String getColumnName(int column) {
      return columns[column];
  }

  public Object getValueAt(int row, int column) {
      TableElement element = (TableElement)data.get(row);
      if( column == 0 )
            return element.getType();
      else if( column == 1 )
              return element.getDato();
      else if( column == 2 )
              return element.getTjeneste();
      else if( column == 3 )
              return element.getUdbyder();
      else if( column == 4 )
              return element.getAflønning();
      else if( column == 5 )
              return element.getAnnonceret();
      else if( column == 6 )
              return element.getFjernes();
      else if( column == 7 )
              return element.getByt();

      return null;
  }

  public Class getColumnClass(int column) {
      return getValueAt(0, column).getClass();
  }

  public boolean isCellEditable(int row, int column) {
      if(column == 7)
        return true;
      else
        return false;
  }

  public void setValueAt(Object value, int row, int column) {
      switch( column ) {
          case 0: {
              ((TableElement)data.get(row)).setType((String)value);
          } break;
          case 1: {
              ((TableElement)data.get(row)).setDato((String)value);
          } break;
          case 2: {
              ((TableElement)data.get(row)).setTjeneste((String)value);
          } break;
          case 3: {
            ((TableElement)data.get(row)).setUdbyder((String)value);
          } break;
          case 4: {
            ((TableElement)data.get(row)).setAflønning((String)value);
          } break;
          case 5: {
              ((TableElement)data.get(row)).setAnnonceret((String)value);
          } break;
          case 6: {
              ((TableElement)data.get(row)).setByt((Boolean)value);
          } break;
      }
      fireTableCellUpdated(row, column);
    }

    public void addTableElement(TableElement element) {
        data.add(element);
        fireTableRowsInserted(data.size(), data.size());
    }

    public void removeTableElementRouteResult(int index) {
        if( !(index == -1) ) {
            data.remove(index);
            fireTableRowsDeleted(index, index);
        }
    }
    public void removeAll() {
          int slut = data.size();
          data.clear();
          fireTableRowsDeleted(0, slut);
    }
}
*****************************Slut TableModel*****************************

*****************************Vagtudbud*****************************
import javax.swing.table.*;
import javax.swing.table.AbstractTableModel;
import javax.swing.*;
import java.util.ArrayList;

public class TableModel extends AbstractTableModel {
    private String[] columns = { "Type", "Dato", "Tjeneste", "Udbyder","Aflønning", "Annonceret", "Fjernes", "Byt" };
      private ArrayList data;

    public TableModel() {
        data = new ArrayList();
    }

  public int getColumnCount() {
      return columns.length;
  }

  public int getRowCount() {
      return data.size();
  }

  public String getColumnName(int column) {
      return columns[column];
  }

  public Object getValueAt(int row, int column) {
      TableElement element = (TableElement)data.get(row);
      if( column == 0 )
            return element.getType();
      else if( column == 1 )
              return element.getDato();
      else if( column == 2 )
              return element.getTjeneste();
      else if( column == 3 )
              return element.getUdbyder();
      else if( column == 4 )
              return element.getAflønning();
      else if( column == 5 )
              return element.getAnnonceret();
      else if( column == 6 )
              return element.getFjernes();
      else if( column == 7 )
              return element.getByt();

      return null;
  }

  public Class getColumnClass(int column) {
      return getValueAt(0, column).getClass();
  }

  public boolean isCellEditable(int row, int column) {
      if(column == 7)
        return true;
      else
        return false;
  }

  public void setValueAt(Object value, int row, int column) {
      switch( column ) {
          case 0: {
              ((TableElement)data.get(row)).setType((String)value);
          } break;
          case 1: {
              ((TableElement)data.get(row)).setDato((String)value);
          } break;
          case 2: {
              ((TableElement)data.get(row)).setTjeneste((String)value);
          } break;
          case 3: {
            ((TableElement)data.get(row)).setUdbyder((String)value);
          } break;
          case 4: {
            ((TableElement)data.get(row)).setAflønning((String)value);
          } break;
          case 5: {
              ((TableElement)data.get(row)).setAnnonceret((String)value);
          } break;
          case 6: {
              ((TableElement)data.get(row)).setByt((Boolean)value);
          } break;
      }
      fireTableCellUpdated(row, column);
    }

    public void addTableElement(TableElement element) {
        data.add(element);
        fireTableRowsInserted(data.size(), data.size());
    }

    public void removeTableElementRouteResult(int index) {
        if( !(index == -1) ) {
            data.remove(index);
            fireTableRowsDeleted(index, index);
        }
    }
    public void removeAll() {
          int slut = data.size();
          data.clear();
          fireTableRowsDeleted(0, slut);
    }
}
*****************************Slut Vagtudbud*****************************
Der er meget unødigkode i overstående, da det er noget, som er lavet for at vise en ide, så du kan jo lige prøve det af, så du kan se om menuen er ok. Den klasse, der er interessant for dig er Gui.java - det er der menuen er.
Avatar billede trp79 Nybegynder
14. juli 2004 - 11:32 #7
Håber du kan bruge det, mvh
Torben
Avatar billede banielsen Nybegynder
14. juli 2004 - 11:56 #8
Det var simpelthen kanont og rigtig fornemme svar....:-)
Tusind tak
Avatar billede trp79 Nybegynder
14. juli 2004 - 11:59 #9
Super du kan bruge det :o)
Hvis det driller må du endelig sige til, så skal jeg se om jeg kan hjælpe - har ikke anden erfaring med JTree end det jeg har lavet i ovenstående.

Mvh
Torben
Avatar billede trp79 Nybegynder
14. juli 2004 - 15:01 #10
Jeg smutter på ferie til på mandag fra imorgen af, så hvis du har spørgsmål i den tid, så kan jeg desværre ikke svare før mandag aften eller tirsdag. Dog er jeg sikker på, at der er masser af hjælp at hente ved at oprette et nyt spørgsmål.
Avatar billede trp79 Nybegynder
14. juli 2004 - 16:23 #11
Husk iøvrigt at accepterer mit svar, hvis det altså kan bruges.
Avatar billede banielsen Nybegynder
15. juli 2004 - 13:01 #12
undskyld... synes jeg bare jeg havde gjort
Avatar billede trp79 Nybegynder
18. juli 2004 - 20:43 #13
Det er skam bare helt i orden - du er nød til at klikke på mit navn før du trykker accepter (kan se svaret ikke er accepteret endnu) :)
Avatar billede banielsen Nybegynder
18. juli 2004 - 22:11 #14
okay... hehe... sorry... (jeg er lidt ny her) :-), er det ok nu?
Avatar billede trp79 Nybegynder
19. juli 2004 - 09:43 #15
Jep det er super - tak for point, og god sommer!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester