webForumDet fria alternativet

SWING nybörjar hjälp

1 svar · 233 visningar · startad av erka

erkaMedlem sedan dec. 19994 597 inlägg
#1

Hej!

Någon vänlig själ kanske kan hjälpa mig med lite SWING. Jag har fattat hur det fungerar i teorin men kan inte omvandla det utan svårigheter till praktiken.

Jag har en frame som ska visa en JMenuBar med två alternativ (Lägg till person, Radera person). Från början är ju själva framen tom förutom min JMenuBar och jag vill när man klickar på ”Lägg till person” ska ett par JTextField och en JButton visas. När man klickar på ”Radera person” ska en dropdownlista visas.

Men jag har inte riktigt förstått hur jag ska strukturera upp innehållet som ska visas efter man klickat på ”Lägg till person” eller ”Radera person”, samt hur jag skapar actionlisteners för menyalternativen. Vad för slags ”SWING behållare” ska ”Lägg till person” och ”Radera person” ligga i, en panel ?

Så här ser min kod ut för tillfället.

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

public class BokFrame extends JFrame 
{
  BorderLayout borderLayout1 = new BorderLayout();
  JPanel jPanel1 = new JPanel();
  JMenuBar JMenuBar1 = new JMenuBar();  
  JMenu JMenuPersoner = new JMenu("Personer");    
  String[] JMenuPersonerItems = new String[] {"Lägg till person","Radera person"};
  

  public BokFrame(){
    super();
    try {
      jpanelInit();
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
  }
  
  private void buildMenuBar(){
    JMenuItem item1 = new JMenuItem(JMenuPersonerItems[0]);
    JMenuPersoner.add(item1);   
    //Här ska väll actionlisteners in
    JMenuItem item2 = new JMenuItem(JMenuPersonerItems[1]);
    JMenuPersoner.add(item2);
    //Här ska väll actionlisteners in 
    JMenuBar1.add(JMenuPersoner);
    setJMenuBar(JMenuBar1);
  }
 
  private void jpanelInit() throws Exception
  {
    this.getContentPane().setLayout(borderLayout1);
    this.setSize(new Dimension(500,400));
    jPanel1.setLayout(null);
    this.setTitle("Mitt register");
    this.getContentPane().add(jPanel1, BorderLayout.CENTER);
    this.buildMenuBar();
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

Om någon kunde förklara hur man ska gå tillväga hur man strukturerar upp information i en applikation, jag har ju detta fall två olika typer av ”sidor” som ska visas, hur ska dessa struktureras upp? Och hur skriver man en actionlistener som visar det som visas skall.

Mycket mycket tacksam

mo:d:fiMedlem sedan jan. 200474 inlägg
#2

Eftersom du vill ha olika komponenter som skall visas beroende på vilket val som är gjort i menyn så skulle jag använda en CardLayout.
Den fungerar ungefär som en tabbedPane men utan att användaren kan klicka på flikar för att välja vilken JPanel som skall visas utan att du istället har en egen funktion i ditt fall menyn som bestämmer vad som skall visas.
om du kollar på java.sun.com och bläddrar till tutorials och sen Teh Swing Tutorial så finns CardLayout förklarad och även kod för att komma igång med den.
Swing tutorial innehåller oxå nyttig info för att komma igång med tex ActionListeners och alla andra användbara swing komponenter och hur de skall visas/användas...

Genererad på 383 ms · cache AV · v20260730165559-full.f96bc7eb