Avatar billede simonvalter Praktikant
11. marts 2003 - 09:47 Der er 5 kommentarer og
1 løsning

java gui / swing

jeg er begyndt at rode med lidt gui og vil godt lave noget med swing .. jeg har tidligere lavet lidt med awt Frame uden problemer men har ikke brugt design view før.
jeg bruger jbuilder til at genere det med men der er vist noget jeg ikke har forstået for jeg kan ikke få andet end vinduet frem ...
lige nu vil jeg bare lave en JMenuBar i en JFrame

her er hvad jbuilder har lavet for mig

public class GUI extends JFrame {

  public static int height = 300;
  public static int width = 400;

  JMenuBar jMenuBar1 = new JMenuBar();
  JMenu jMenu1 = new JMenu();
  JMenuItem jMenuItem1 = new JMenuItem();

  public GUI() {
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  private void jbInit() throws Exception {
    jMenu1.setText("File");
    jMenuItem1.setText("Exit");
    jMenuItem1.addActionListener(new GUI_jMenuItem1_actionAdapter(this));
    this.setTitle("GUI");
    this.getContentPane().setLayout(null);
    jMenuBar1.add(jMenu1);
    jMenu1.add(jMenuItem1);
  }

  void jMenuItem1_actionPerformed(ActionEvent e) {
    System.exit(0);
  }

}

class GUI_jMenuItem1_actionAdapter implements java.awt.event.ActionListener {
  GUI adaptee;

  GUI_jMenuItem1_actionAdapter(GUI adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jMenuItem1_actionPerformed(e);
  }
}


og her er min main

public class UseGUI {
  public static void main(String[] args) {
    GUI g = new GUI();
    g.setVisible(true);
    g.addWindowListener(new WindowActions());
    g.setSize(g.width,g.height);

  }
}



hvad gør jeg forkert.. ?
Avatar billede repsak Nybegynder
11. marts 2003 - 10:20 #1
Der er lige et par ting galt:

class UseGUI {
  public static void main(String[] args) {
    GUI g = new GUI();
    g.setVisible(true);
    //g.addWindowListener(new WindowActions()); (behøves medmindre at du vil lave 'specielle' ting når du lukker
    g.setSize(g.width,g.height);
    g.show(); //Dette er vigtigt ellers vises ingenting
  }
}

  private void jbInit() throws Exception {
    jMenu1.setText("File");
    jMenuItem1.setText("Exit");
    jMenuItem1.addActionListener(new GUI_jMenuItem1_actionAdapter(this));
    this.setTitle("GUI");
    this.getContentPane().setLayout(null);
    jMenu1.add(jMenuItem1); // Her har jeg byttet lidt rundt...
    jMenuBar1.add(jMenu1); //  ...med denne linje
    setJMenuBar(jMenuBar1); // Denne linje skal også med
  }
Avatar billede simonvalter Praktikant
11. marts 2003 - 10:28 #2
ok jeg fik det til at virke ..
det var bare den her jeg manglede this.setJMenuBar(jMenuBar1); som du sagde ..
og jeg har smidt setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ind isteted for g.addWindowListener(new WindowActions());

men jeg har lige et spm til
g.setVisible(true);
g.show(); //Dette er vigtigt ellers vises ingenting
det virker hvis jeg har bare en af dem slået til .. gør de det samme ?
Avatar billede simonvalter Praktikant
11. marts 2003 - 10:30 #3
ok læste lige selv lidt ..
g.setVisible(true); g.setVisible(false);
vil være precis det samme som
g.show(); g.hide();

eller ?
Avatar billede repsak Nybegynder
11. marts 2003 - 10:41 #4
efter lige kort at have set i javas kildekode kan jeg konkludere at hvis du skriver show() kaldes setVisible(true) automatisk. Men ikke omvendt. Dvs. at du burde kunne nøjes med at skrive g.show()!
Avatar billede repsak Nybegynder
11. marts 2003 - 10:41 #5
så nej.
setVisible(true) og show er ikke det samme!
Avatar billede simonvalter Praktikant
11. marts 2003 - 11:01 #6
ok tak
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

IT-JOB