Avatar billede netspinner Nybegynder
19. maj 2006 - 16:50 Der er 16 kommentarer og
1 løsning

GUI skal optimeres - lidt problemer hist og her

Hej exp'ere,
Jeg har færdiggjort det meste af arbejdet på min GUI, men jeg har noget der volder mig problemer.


Koden kommer her, forklaringerne kommer efter koden.


import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.awt.BorderLayout;
import javax.swing.BoxLayout;
import javax.swing.border.*;
import java.text.*;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.applet.*;

public class GUI extends JFrame implements ActionListener
{
    //private  BookTable archive; // Important instantiable variabel for making I/O possible!

    // Attributes and variables declaration
   
    // JButtons
    private  JButton helpBtn = new JButton("Hjælp");
    private  JButton addBtn = new JButton("Tilføj", new ImageIcon("media/newnode.jpg"));
    private  JButton removeBtn = new JButton("Fjern");
    private  JButton updateBtn = new JButton("Opdater");
    private  JButton listeventsBtn = new JButton("List alle");

    // JTextFields
    private  JTextField eventnameField = new JTextField();
    private  JTextField titleField = new JTextField(); 
    private  JTextField artistField = new JTextField(); 
    private  JTextField genreField = new JTextField();
    private  JTextField monthField = new JTextField();
    private  JTextField dateField = new JTextField();
    private  JTextField timeField = new JTextField();
    private  JTextField locationField = new JTextField();
    private  JTextField priceField = new JTextField();

    // JLabels
    private  JLabel jLabel1 = new JLabel();
    private  JLabel jLabel2 = new JLabel();
    private  JLabel blankLabel = new JLabel(" ");
    private  JLabel infoLabel = new JLabel(" ");
    private  JLabel eventnameLabel = new JLabel("Projektnavn");
    private  JLabel titleLabel = new JLabel("Titel");
    private  JLabel artistLabel = new JLabel("Kunstner(e)");
    private  JLabel genreLabel = new JLabel("Genre");
    private  JLabel monthLabel = new JLabel("Måned");
    private  JLabel dateLabel = new JLabel("Dato (brug DD-MM-ÅÅ format");
    private  JLabel timeLabel = new JLabel("Tidspunkt (brug TT:MM format");
    private  JLabel locationLabel = new JLabel("Sted");
    private  JLabel priceLabel = new JLabel("Pris (skriv med tal)");

    // JPanels
    private  JPanel northPanel = new JPanel();  // For logo
    private  JPanel southPanel = new JPanel();  // For infoLabel
    private  JPanel west = new JPanel();        // Main container for inputPanel, addPanel, ruPanel and searchPanel
    private  JPanel inputPanel = new JPanel();  // Contains JLabels + JTextFields
    private  JPanel addPanel = new JPanel();    // Contains addBtn
    private  JPanel ruPanel = new JPanel();    // Contains removeBtn + updateBtn
    private  JPanel searchPanel = new JPanel(); // Contains listeventsBtn
    private  JPanel centerPanel = new JPanel();

   
    // JImageIcons
    private  ImageIcon jLogo = new ImageIcon();   
    private  ImageIcon logo = new ImageIcon("media/logo.jpg");
   
    // Image
    private Image iconic; 
 
    // JTextArea
    private  JTextArea displayArea = new JTextArea();//(5,10); //5,10
   
    // JMenuBar
    private  JMenuBar bar = new JMenuBar();   
   
    // JMenus
    private  JMenu editMenu  = new JMenu("Rediger");
    private  JMenu searchMenu = new JMenu("Søg");
    private  JMenu fileMenu  = new JMenu("Filer");
   
    // Submenu for "Søg > arrangement med kunstner(e)"
    private  JMenu addfuncMenu = new JMenu("Søgning >>");
 
    // JMenuItems
    private  JMenuItem addEvent    = new JMenuItem("Tilføj arrangement",
                                                new ImageIcon("note.gif"));
    private  JMenuItem removeEvent = new JMenuItem("Fjern arrangement");
    private  JMenuItem updateEvent = new JMenuItem("Opdater arrangement");
 
    private  JMenuItem listevents = new JMenuItem("List alle arrangementer");
    private  JMenuItem findbyeventname = new JMenuItem("Søg på projektnavn");
    private  JMenuItem findbygenre = new JMenuItem("Søg på genre");
    private  JMenuItem findbylocation = new JMenuItem("Søg på sted");
    private  JMenuItem findbymonth = new JMenuItem("Søg på måned");
    private  JMenuItem findbydate = new JMenuItem("Søg på dato");
 
    //"Search Books by Artist(s)" in submenu...
    private  JMenuItem artistItem = new JMenuItem("Søg arrangementer med kunstner(e)",
                                                new ImageIcon("icon_eek.gif"));

    private  JMenuItem save    = new JMenuItem("Gem");                                           
    private  JMenuItem savequit = new JMenuItem("Gem og afslut");
    private  JMenuItem quit    = new JMenuItem("Afslut uden at gemme");
   
    private static DateFormat df = new SimpleDateFormat("dd-MM-yy");
   
    // End of variables declaration


   
    /** Creates new form GUI */
    public GUI() {
        super();
        GridBagConstraints gridBagConstraints;

        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
       
        /*
        * NORTH
        */
       
        // We will work with a GridBagLayout in the northern region
        northPanel.setLayout(new GridBagLayout());

        northPanel.setBorder(BorderFactory.createEtchedBorder());
        jLabel2.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel2.setText("IMAGE");
        jLabel2.setHorizontalTextPosition(SwingConstants.LEADING);
//        jLabel2.setMinimumSize(new Dimension(100, 100));
//        jLabel2.setPreferredSize(new Dimension(100, 100));
        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.fill = GridBagConstraints.BOTH;
        gridBagConstraints.weightx = 0.3;
        gridBagConstraints.weighty = 0.3;
        northPanel.add(jLabel2, gridBagConstraints);
        //northPanel.add(logo, gridBagConstraints);

        //helpBtn.setText("Print");
        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.anchor = GridBagConstraints.SOUTHEAST; // Place print button in south east position
        northPanel.add(helpBtn, gridBagConstraints);

        // Finally add north to the North BorderLayout
        getContentPane().add(northPanel, BorderLayout.NORTH);
       
        /*
        * SOUTH
        */

        southPanel.setBorder(BorderFactory.createEtchedBorder());

        // Add southPanel to the South BorderLayout
        getContentPane().add(southPanel, BorderLayout.SOUTH);
       
       
        centerPanel.setLayout(new BoxLayout(centerPanel, BoxLayout.Y_AXIS));
        centerPanel.setBorder(BorderFactory.createEtchedBorder());
        centerPanel.setMinimumSize(new Dimension(100, 100));
       
        // Add centerPanel to the Center BorderLayout
        getContentPane().add(centerPanel, BorderLayout.CENTER);
       
       
        /*
        * WEST
        * west        = Main container
        * inputPanel  = JLabels, JTextFields
        * addPanel    = "Tilføj"            > addBtn
        * ruPanel    = "Fjern & opdater"  > removeBtn, updateBtn
        * searchPanel = "Søgning"          > listeventsBtn
        */

        west.setLayout(new BoxLayout(west, BoxLayout.Y_AXIS));
        west.setBorder(BorderFactory.createEtchedBorder());
        //west.setMinimumSize(new Dimension(100, 100));
       

        addPanel.setBorder(BorderFactory.createTitledBorder("Tilf\u00f8j"));
        addPanel.add(addBtn);
        west.add(addPanel);
       
       
        ruPanel.setBorder(BorderFactory.createTitledBorder("Fjern & opdater"));
        ruPanel.add(removeBtn);
        ruPanel.add(updateBtn);
        west.add(ruPanel);


        inputPanel.setLayout(new BoxLayout(inputPanel, BoxLayout.Y_AXIS));
        inputPanel.setBorder(BorderFactory.createTitledBorder("Kontrolpanel"));
        inputPanel.add(eventnameLabel);
        inputPanel.add(eventnameField);

        inputPanel.add(titleLabel);
        //titleLabel.setSize(11);
        inputPanel.add(titleField);

        inputPanel.add(artistLabel);
        inputPanel.add(artistField);
     
        inputPanel.add(genreLabel);
        inputPanel.add(genreField);
       
        inputPanel.add(monthLabel);
        inputPanel.add(monthField);

        inputPanel.add(dateLabel);
        inputPanel.add(dateField);
     
        inputPanel.add(timeLabel);
        inputPanel.add(timeField);

        inputPanel.add(locationLabel);
        inputPanel.add(locationField);

        inputPanel.add(priceLabel);
        inputPanel.add(priceField);

        // blankLabel makes a space between the last JTextField and the listeventBtn
        inputPanel.add(blankLabel);

        west.add(inputPanel);   


        searchPanel.setBorder(BorderFactory.createTitledBorder("S\u00f8gning"));
        searchPanel.add(listeventsBtn);
        west.add(searchPanel);

        infoLabel.setFont(new Font("Arial", 1, 13)); // 0 = PLAIN, 1 = BOLD?
        infoLabel.setForeground(Color.red);
        southPanel.setBackground(new Color(255, 255, 128));
        southPanel.add(infoLabel);
       
        // Finally add west to the West BorderLayout
        getContentPane().add(west, BorderLayout.WEST);
     
       
        /*
        * displayArea SPECIFICS
        */
       
        //Assign a JScrollPane to the displayArea in case we need to scroll through tons of records
        JScrollPane pane = new JScrollPane(displayArea);
        add(pane);
       
        displayArea.setBorder(new TitledBorder(new LineBorder(Color.black),"Resultater",TitledBorder.CENTER,TitledBorder.TOP));
     
        displayArea.setEnabled(false);
        displayArea.setDisabledTextColor(Color.blue);
        displayArea.setFont(new Font("Arial", 0, 11)); // 0 = PLAIN, 1 = BOLD?

        /*
        * ADD PANELS
        */
     

        this.add(northPanel, BorderLayout.NORTH);
        this.add(southPanel, BorderLayout.SOUTH);

        getContentPane().add(west, BorderLayout.WEST);

        getContentPane().setBackground(Color.pink); //lightGray);
//        setBackground(Color.pink);
        setVisible(true);


      /*
        * MENUS
        */


        this.setJMenuBar(bar);

        bar.add(fileMenu);
        fileMenu.setMnemonic(KeyEvent.VK_F);
        bar.add(editMenu);
        editMenu.setMnemonic(KeyEvent.VK_E);
        bar.add(searchMenu);
        searchMenu.setMnemonic(KeyEvent.VK_S);
        bar.add(addfuncMenu);
        addfuncMenu.setMnemonic(KeyEvent.VK_A);
     
        editMenu.add(addEvent);
        editMenu.add(removeEvent);
        editMenu.add(updateEvent);
     
        //Assign Key Accelerators to Add and Remove functions
        addEvent.setAccelerator(KeyStroke.getKeyStroke(
            KeyEvent.VK_D, ActionEvent.CTRL_MASK));
        removeEvent.setAccelerator(KeyStroke.getKeyStroke(
            KeyEvent.VK_R, ActionEvent.CTRL_MASK));
     
        searchMenu.add(listevents);
       
        //Add separator to searchMenu to separate submenu
        searchMenu.addSeparator();
     
        //Add submenu to menu
        searchMenu.add(addfuncMenu);
     
        //Add items to submenu
        addfuncMenu.add(artistItem);
        addfuncMenu.add(findbyeventname);
        addfuncMenu.add(findbygenre);
        addfuncMenu.add(findbylocation);
        addfuncMenu.add(findbymonth);
        addfuncMenu.add(findbydate);
     
        //Assign Key Accelerator to List Records function
        listevents.setAccelerator(KeyStroke.getKeyStroke(
            KeyEvent.VK_1, ActionEvent.ALT_MASK));
     
        fileMenu.add(save);
     
        //Assign Key Accelerator to Save function
        save.setAccelerator(KeyStroke.getKeyStroke(
            KeyEvent.VK_S, ActionEvent.CTRL_MASK));
     
        //Separate Save function from the two others
        fileMenu.addSeparator();
     
        fileMenu.add(savequit);
        fileMenu.add(quit);
     
        //Assign Mnemonic to Quit function
        quit.setMnemonic(KeyEvent.VK_Q);


        /*
        * ASSIGNING ACTIONLISTENERS TO MAKE THE APPLICATION INTERACTIVE AND WORKABLE
        */     


        addEvent.addActionListener(this);
        removeEvent.addActionListener(this);
        updateEvent.addActionListener(this);

        listevents.addActionListener(this);
        findbyeventname.addActionListener(this);
        artistItem.addActionListener(this);
        findbygenre.addActionListener(this);

        save.addActionListener(this);
        savequit.addActionListener(this);
        quit.addActionListener(this);

        addBtn.addActionListener(this);
        removeBtn.addActionListener(this);
        updateBtn.addActionListener(this);
        listeventsBtn.addActionListener(this);
        helpBtn.addActionListener(this);


        /*
        * APPLICATION SPECIFIC
        */


        // Application title
        setTitle("Dirigenten");
        // Application size
        setSize(950,650);
        // Create an image object to define application icon
        iconic = getToolkit().getImage("media/newnode.jpg");
        // Apply an icon to application
        setIconImage(iconic);
        // Prevent user from resizing application during run-time. Stick to size given above.
        setResizable(false);
        // Prevent user from closing via Windows' standard GUI operations
        //setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

        //Start application maximized
        //setExtendedState(MAXIMIZED_BOTH);
     
        //archive = new BookTable();
     
        //BookIO.readList(archive); // Denne sætning er rigelig til at kunne indlæse gemte poster!!
       
        eventnameField.setFocusable(true);
    }
 

    /*
    * APPLICATION LOGIC
    */ 
   
    public void actionPerformed(ActionEvent e)
    {
    }
    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                new GUI().setVisible(true);
            }
        });
    }
}


Jeg vil gerne have at tekstfelterne er ca. halvt så lange. Jeg kan simpelthen ikke finde ud af, hvorfor de bliver så lange. Desuden kan jeg ikke få tilføjet et billede/ImageIcon til northPanel, hvor der pt. er en jLabel2 (med teksten "IMAGE", som bare skal slettes). Håber at en GUI-haj vil kigge på den for mig...
Avatar billede mikkelbm Nybegynder
19. maj 2006 - 20:59 #1
Tekstfelterne bliver så lange på grund af det layout du bruger. Jeg ser lige om jeg kan fikse det.
Avatar billede netspinner Nybegynder
19. maj 2006 - 21:02 #2
Mange tak :)
Avatar billede mikkelbm Nybegynder
19. maj 2006 - 21:09 #3
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.awt.BorderLayout;
import javax.swing.BoxLayout;
import javax.swing.border.*;
import java.text.*;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.applet.*;

public class GUI extends JFrame implements ActionListener
{
    //private  BookTable archive; // Important instantiable variabel for making I/O possible!

    // Attributes and variables declaration
   
    // JButtons
    private  JButton helpBtn = new JButton("Hjælp");
    private  JButton addBtn = new JButton("Tilføj", new ImageIcon("media/newnode.jpg"));
    private  JButton removeBtn = new JButton("Fjern");
    private  JButton updateBtn = new JButton("Opdater");
    private  JButton listeventsBtn = new JButton("List alle");

    // JTextFields
    private  JTextField eventnameField = new JTextField(1);
    private  JTextField titleField = new JTextField(2); 
    private  JTextField artistField = new JTextField(3); 
    private  JTextField genreField = new JTextField(4);
    private  JTextField monthField = new JTextField(5);
    private  JTextField dateField = new JTextField(6);
    private  JTextField timeField = new JTextField(7);
    private  JTextField locationField = new JTextField(8);
    private  JTextField priceField = new JTextField(9);

    // JLabels
    private  JLabel jLabel1 = new JLabel();
    private  JLabel jLabel2 = new JLabel();
    private  JLabel blankLabel = new JLabel(" ");
    private  JLabel infoLabel = new JLabel(" ");
    private  JLabel eventnameLabel = new JLabel("Projektnavn");
    private  JLabel titleLabel = new JLabel("Titel");
    private  JLabel artistLabel = new JLabel("Kunstner(e)");
    private  JLabel genreLabel = new JLabel("Genre");
    private  JLabel monthLabel = new JLabel("Måned");
    private  JLabel dateLabel = new JLabel("Dato (brug DD-MM-ÅÅ format");
    private  JLabel timeLabel = new JLabel("Tidspunkt (brug TT:MM format");
    private  JLabel locationLabel = new JLabel("Sted");
    private  JLabel priceLabel = new JLabel("Pris (skriv med tal)");

    // JPanels
    private  JPanel northPanel = new JPanel();  // For logo
    private  JPanel southPanel = new JPanel();  // For infoLabel
    private  JPanel west = new JPanel();        // Main container for inputPanel, addPanel, ruPanel and searchPanel
    private  JPanel inputPanel = new JPanel();  // Contains JLabels + JTextFields
    private  JPanel addPanel = new JPanel();    // Contains addBtn
    private  JPanel ruPanel = new JPanel();    // Contains removeBtn + updateBtn
    private  JPanel searchPanel = new JPanel(); // Contains listeventsBtn
    private  JPanel centerPanel = new JPanel();

   
    // JImageIcons
    private  ImageIcon jLogo = new ImageIcon();   
    private  ImageIcon logo = new ImageIcon("media/logo.jpg");
   
    // Image
    private Image iconic; 
 
    // JTextArea
    private  JTextArea displayArea = new JTextArea();//(5,10); //5,10
   
    // JMenuBar
    private  JMenuBar bar = new JMenuBar();   
   
    // JMenus
    private  JMenu editMenu  = new JMenu("Rediger");
    private  JMenu searchMenu = new JMenu("Søg");
    private  JMenu fileMenu  = new JMenu("Filer");
   
    // Submenu for "Søg > arrangement med kunstner(e)"
    private  JMenu addfuncMenu = new JMenu("Søgning >>");
 
    // JMenuItems
    private  JMenuItem addEvent    = new JMenuItem("Tilføj arrangement",
                                                new ImageIcon("note.gif"));
    private  JMenuItem removeEvent = new JMenuItem("Fjern arrangement");
    private  JMenuItem updateEvent = new JMenuItem("Opdater arrangement");
 
    private  JMenuItem listevents = new JMenuItem("List alle arrangementer");
    private  JMenuItem findbyeventname = new JMenuItem("Søg på projektnavn");
    private  JMenuItem findbygenre = new JMenuItem("Søg på genre");
    private  JMenuItem findbylocation = new JMenuItem("Søg på sted");
    private  JMenuItem findbymonth = new JMenuItem("Søg på måned");
    private  JMenuItem findbydate = new JMenuItem("Søg på dato");
 
    //"Search Books by Artist(s)" in submenu...
    private  JMenuItem artistItem = new JMenuItem("Søg arrangementer med kunstner(e)",
                                                new ImageIcon("icon_eek.gif"));

    private  JMenuItem save    = new JMenuItem("Gem");                                           
    private  JMenuItem savequit = new JMenuItem("Gem og afslut");
    private  JMenuItem quit    = new JMenuItem("Afslut uden at gemme");
   
    private static DateFormat df = new SimpleDateFormat("dd-MM-yy");
   
    // End of variables declaration


   
    /** Creates new form GUI */
    public GUI() {
        super();
        GridBagConstraints gridBagConstraints;

        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
       
        /*
        * NORTH
        */
       
        // We will work with a GridBagLayout in the northern region
        northPanel.setLayout(new GridBagLayout());

        northPanel.setBorder(BorderFactory.createEtchedBorder());
        jLabel2.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel2.setText("IMAGE");
        jLabel2.setIcon(logo);
        jLabel2.setHorizontalTextPosition(SwingConstants.LEADING);
//        jLabel2.setMinimumSize(new Dimension(100, 100));
//        jLabel2.setPreferredSize(new Dimension(100, 100));
        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.fill = GridBagConstraints.BOTH;
        gridBagConstraints.weightx = 0.3;
        gridBagConstraints.weighty = 0.3;
        northPanel.add(jLabel2, gridBagConstraints);
        northPanel.add(jLabel2, gridBagConstraints);

        //helpBtn.setText("Print");
        gridBagConstraints = new GridBagConstraints();
        gridBagConstraints.anchor = GridBagConstraints.SOUTHEAST; // Place print button in south east position
        northPanel.add(helpBtn, gridBagConstraints);

        // Finally add north to the North BorderLayout
        getContentPane().add(northPanel, BorderLayout.NORTH);
       
        /*
        * SOUTH
        */

        southPanel.setBorder(BorderFactory.createEtchedBorder());

        // Add southPanel to the South BorderLayout
        getContentPane().add(southPanel, BorderLayout.SOUTH);
       
       
        centerPanel.setLayout(new BoxLayout(centerPanel, BoxLayout.Y_AXIS));
        centerPanel.setBorder(BorderFactory.createEtchedBorder());
        centerPanel.setMinimumSize(new Dimension(100, 100));
       
        // Add centerPanel to the Center BorderLayout
        getContentPane().add(centerPanel, BorderLayout.CENTER);
       
       
        /*
        * WEST
        * west        = Main container
        * inputPanel  = JLabels, JTextFields
        * addPanel    = "Tilføj"            > addBtn
        * ruPanel    = "Fjern & opdater"  > removeBtn, updateBtn
        * searchPanel = "Søgning"          > listeventsBtn
        */

        west.setLayout(new BoxLayout(west, BoxLayout.Y_AXIS));
        west.setBorder(BorderFactory.createEtchedBorder());
        //west.setMinimumSize(new Dimension(100, 100));
       

        addPanel.setBorder(BorderFactory.createTitledBorder("Tilf\u00f8j"));
        addPanel.add(addBtn);
        west.add(addPanel);
       
       
        ruPanel.setBorder(BorderFactory.createTitledBorder("Fjern & opdater"));
        ruPanel.add(removeBtn);
        ruPanel.add(updateBtn);
        west.add(ruPanel);


        inputPanel.setLayout(new BoxLayout(inputPanel, BoxLayout.Y_AXIS));
        inputPanel.setBorder(BorderFactory.createTitledBorder("Kontrolpanel"));
       
        JPanel temp = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
        temp.add(eventnameField);
        inputPanel.add(eventnameLabel);
        inputPanel.add(temp);

        inputPanel.add(titleLabel);
        //titleLabel.setSize(11);
        JPanel temp0 = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
        temp0.add(titleField);
        inputPanel.add(temp0);

        JPanel temp1 = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
        temp1.add(artistField);
        inputPanel.add(artistLabel);
        inputPanel.add(temp1);
     
        JPanel temp2 = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
        temp2.add(genreField);     
        inputPanel.add(genreLabel);
        inputPanel.add(temp2);
       
        JPanel temp3 = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
        temp3.add(monthField);       
        inputPanel.add(monthLabel);
        inputPanel.add(temp3);

        JPanel temp4 = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
        temp4.add(dateField);
        inputPanel.add(dateLabel);
        inputPanel.add(temp4);

        JPanel temp5 = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
        temp5.add(timeField);     
        inputPanel.add(timeLabel);
        inputPanel.add(temp5);

        JPanel temp6 = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
        temp6.add(locationField);
        inputPanel.add(locationLabel);
        inputPanel.add(temp6);

        JPanel temp7 = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
        temp7.add(priceField);
        inputPanel.add(priceLabel);
        inputPanel.add(temp7);

        // blankLabel makes a space between the last JTextField and the listeventBtn
        inputPanel.add(blankLabel);

        west.add(inputPanel);   


        searchPanel.setBorder(BorderFactory.createTitledBorder("S\u00f8gning"));
        searchPanel.add(listeventsBtn);
        west.add(searchPanel);

        infoLabel.setFont(new Font("Arial", 1, 13)); // 0 = PLAIN, 1 = BOLD?
        infoLabel.setForeground(Color.red);
        southPanel.setBackground(new Color(255, 255, 128));
        southPanel.add(infoLabel);
       
        // Finally add west to the West BorderLayout
        getContentPane().add(west, BorderLayout.WEST);
     
       
        /*
        * displayArea SPECIFICS
        */
       
        //Assign a JScrollPane to the displayArea in case we need to scroll through tons of records
        JScrollPane pane = new JScrollPane(displayArea);
        add(pane);
       
        displayArea.setBorder(new TitledBorder(new LineBorder(Color.black),"Resultater",TitledBorder.CENTER,TitledBorder.TOP));
     
        displayArea.setEnabled(false);
        displayArea.setDisabledTextColor(Color.blue);
        displayArea.setFont(new Font("Arial", 0, 11)); // 0 = PLAIN, 1 = BOLD?

        /*
        * ADD PANELS
        */
     

        this.add(northPanel, BorderLayout.NORTH);
        this.add(southPanel, BorderLayout.SOUTH);

        getContentPane().add(west, BorderLayout.WEST);

        getContentPane().setBackground(Color.pink); //lightGray);
//        setBackground(Color.pink);
        setVisible(true);


      /*
        * MENUS
        */


        this.setJMenuBar(bar);

        bar.add(fileMenu);
        fileMenu.setMnemonic(KeyEvent.VK_F);
        bar.add(editMenu);
        editMenu.setMnemonic(KeyEvent.VK_E);
        bar.add(searchMenu);
        searchMenu.setMnemonic(KeyEvent.VK_S);
        bar.add(addfuncMenu);
        addfuncMenu.setMnemonic(KeyEvent.VK_A);
     
        editMenu.add(addEvent);
        editMenu.add(removeEvent);
        editMenu.add(updateEvent);
     
        //Assign Key Accelerators to Add and Remove functions
        addEvent.setAccelerator(KeyStroke.getKeyStroke(
            KeyEvent.VK_D, ActionEvent.CTRL_MASK));
        removeEvent.setAccelerator(KeyStroke.getKeyStroke(
            KeyEvent.VK_R, ActionEvent.CTRL_MASK));
     
        searchMenu.add(listevents);
       
        //Add separator to searchMenu to separate submenu
        searchMenu.addSeparator();
     
        //Add submenu to menu
        searchMenu.add(addfuncMenu);
     
        //Add items to submenu
        addfuncMenu.add(artistItem);
        addfuncMenu.add(findbyeventname);
        addfuncMenu.add(findbygenre);
        addfuncMenu.add(findbylocation);
        addfuncMenu.add(findbymonth);
        addfuncMenu.add(findbydate);
     
        //Assign Key Accelerator to List Records function
        listevents.setAccelerator(KeyStroke.getKeyStroke(
            KeyEvent.VK_1, ActionEvent.ALT_MASK));
     
        fileMenu.add(save);
     
        //Assign Key Accelerator to Save function
        save.setAccelerator(KeyStroke.getKeyStroke(
            KeyEvent.VK_S, ActionEvent.CTRL_MASK));
     
        //Separate Save function from the two others
        fileMenu.addSeparator();
     
        fileMenu.add(savequit);
        fileMenu.add(quit);
     
        //Assign Mnemonic to Quit function
        quit.setMnemonic(KeyEvent.VK_Q);


        /*
        * ASSIGNING ACTIONLISTENERS TO MAKE THE APPLICATION INTERACTIVE AND WORKABLE
        */     


        addEvent.addActionListener(this);
        removeEvent.addActionListener(this);
        updateEvent.addActionListener(this);

        listevents.addActionListener(this);
        findbyeventname.addActionListener(this);
        artistItem.addActionListener(this);
        findbygenre.addActionListener(this);

        save.addActionListener(this);
        savequit.addActionListener(this);
        quit.addActionListener(this);

        addBtn.addActionListener(this);
        removeBtn.addActionListener(this);
        updateBtn.addActionListener(this);
        listeventsBtn.addActionListener(this);
        helpBtn.addActionListener(this);


        /*
        * APPLICATION SPECIFIC
        */


        // Application title
        setTitle("Dirigenten");
        // Application size
        setSize(950,650);
        // Create an image object to define application icon
        iconic = getToolkit().getImage("media/newnode.jpg");
        // Apply an icon to application
        setIconImage(iconic);
        // Prevent user from resizing application during run-time. Stick to size given above.
        setResizable(false);
        // Prevent user from closing via Windows' standard GUI operations
        //setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

        //Start application maximized
        //setExtendedState(MAXIMIZED_BOTH);
     
        //archive = new BookTable();
     
        //BookIO.readList(archive); // Denne sætning er rigelig til at kunne indlæse gemte poster!!
       
        eventnameField.setFocusable(true);
    }
 

    /*
    * APPLICATION LOGIC
    */ 
   
    public void actionPerformed(ActionEvent e)
    {
    }
    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                new GUI().setVisible(true);
            }
        });
    }
}
Avatar billede mikkelbm Nybegynder
19. maj 2006 - 21:11 #4
Du kan ændre længden i din teksfelter i constructoren hvor de oprettes:

new JTextField (4); // osv...

Og mht dit logo, så var det fordi du prøvede at add'e et imageicon direkte - og det kan man ikke. Jeg har add'et det til din jLabel2 istedet og add'et den label i stedet.
Avatar billede netspinner Nybegynder
19. maj 2006 - 21:11 #5
Okay, det ser bedre ud - men west er stadig meget bred. Hvordan får jeg det fikset?
Avatar billede mikkelbm Nybegynder
19. maj 2006 - 21:15 #6
Tilføj følgende linje:

west.setPreferredSize(new Dimension(200, 0));

Så skulle det spille...
Avatar billede mikkelbm Nybegynder
19. maj 2006 - 21:28 #7
Jeg smider et svar i tilfælde af, at det var brugbart. Du kan bare spørge, hvis du er i tvivl om noget.
Avatar billede netspinner Nybegynder
19. maj 2006 - 21:44 #8
Jep, jeg er lige i gang med at tilpasse det, for har lavet flere modififikationer siden jeg postede koden :)
Avatar billede netspinner Nybegynder
19. maj 2006 - 22:30 #9
Der er forresten opstået noget sjovt - tjek billedet her http://peecee.dk/?id=39948

Jo længere en streng man skriver og når man klikker på eksempelvis Tilføj, jo bredere bliver panelet skaleret og jo større bliver tekstfelterne.

Jeg vil ikke poste al koden igen, men måske du kan se hvad der er galt i ovenstående? :)
Avatar billede mikkelbm Nybegynder
20. maj 2006 - 10:07 #10
Det sker ikke i den kode jeg postede tidligere, hvis der sættes en preferredSize på west-panelet. Så jeg kan ikke svare på det, uden at skulle teste eller se koden.
Avatar billede netspinner Nybegynder
20. maj 2006 - 10:20 #11
Prøv at tjekke koden jeg postede her, hvis du selvfølgelig vil :) Jeg ved godt at du skal bruge metoderne samt de andre klasser for at kunne tilføje/slette etc., men måske du kan se det ud fra min GUI-programmering, hvorfor der opstår en auto-skalering?

Jeg er meget glad for dit forslag generelt, men lidt ked af at skulle bruge FlowLayout. Men hvis det ikke bliver løst, er FlowLayout vist vejen ud af problemet...
Avatar billede mikkelbm Nybegynder
20. maj 2006 - 10:31 #12
Både med din egen første kode og med den kode jeg postede, sker der ikke noget underligt, når jeg trykker på nogle knapper og teksten er lang.

Du har jo heller ikke udfyldt noget i din actionPerformed i den kode der er posted her, så jeg kan ikke gennemskue hvad der skulle forårsage disse ting.
Avatar billede mikkelbm Nybegynder
20. maj 2006 - 10:35 #13
Du må have tilføjet noget kode i din actionPerformed, som gør et eller andet der forårsager ændringen af størrelsen.
Avatar billede netspinner Nybegynder
20. maj 2006 - 11:30 #14
Jep, det var også koden i actionPerformed jeg mente. Den er dog MEGET omfattende, derfor er det lidt vildt at poste det her. Jeg forsøger lige at kigge på det selv. Du får dog point nu som tak for hjælpen! :-)
Avatar billede mikkelbm Nybegynder
20. maj 2006 - 11:32 #15
Tak for det.
Jeg kan i hvert fald ikke hjælpe dig med dit sidste problem uden at se noget kode :)
Avatar billede netspinner Nybegynder
20. maj 2006 - 11:36 #16
Hvis ikke jeg har løst det her i eftermiddag (har en del andet jeg skal have programmeret), så poster jeg lige noget kode - men jeg har lidt svært ved at tro at det skulle være kode fra actionPerformed. Jeg har et par andre spørgsmål kørende herinde uden de store svar, bl.a. på en datoalgoritme... måske du kan være behjælpelig der også? :)
Avatar billede netspinner Nybegynder
20. maj 2006 - 20:44 #17
Hej igen mikkelbm > jeg postede en besked inde på Datoalgoritme-tråden om at jeg har uploadet mit projekt... har du evt. tid til at kigge på det i morgen?
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