Aplikacja okienkowa

0

Zazwyczaj pisałem aplety i nie było problemów ale teraz zachciało mi sie napisać aplikacje okienkową ...
Kod w jawie wygląda tak :

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

public class ProsteOkno extends JFrame implements ActionListener {
  JLabel imieLabel = new JLabel("Witaj!!!");; 
  //AudioClip muzyka = getAudioClip(getCodeBase(), "DZWONIE.WAV"); 
   Button start =new Button("START");	
  
  
  public ProsteOkno() {
    super("Napis w status bar");
    Container cp = getContentPane(); //zwraca kontener komponentów
    cp.setLayout(null); 
    //                  oX,oY, x  , y 
    cp.add(imieLabel);
    imieLabel.setBounds(0, 0, 350, 20);
    
    cp.add(start);
    start.setBounds(20,20,20,50);
    start.addActionListener(this);
    
  public void actionPerformed(ActionEvent e){
   Object o = e.getSource();
    //if (o==start) muzyka.loop(); 
      if (o==start) start.setLabel("DZIAŁA");
    
   }	
     
  }
	
  public static void main(String[] args) {
    ProsteOkno okno = new ProsteOkno();
    okno.setSize(500, 500);
    okno.setVisible(true);
  }
}

pisząc aplety wykorzystywałem awt ale z powodu braku przykładów dla awt wykorzystałem swing, ale mniejsza o to program w założeniu ma odtwarzać plik audio, jednak daleko mi do tego bo gdy tylko dodam dActionListener do przycisku start oraz dorzucę metodę actionPerformed(ActionEvent e) coś przestaje działać ... dostaje taki oto komunikat błędu :

ProsteOkno.java:23: illegal start of expression
  public void actionPerformed(ActionEvent e){
  ^
ProsteOkno.java:32: class, interface, or enum expected
  public static void main(String[] args) {
                ^
ProsteOkno.java:34: class, interface, or enum expected
    okno.setSize(500, 500);
    ^
ProsteOkno.java:35: class, interface, or enum expected
    okno.setVisible(true);
    ^
ProsteOkno.java:36: class, interface, or enum expected
  }
  ^
5 errors

krzyczy jakimiś wyjątkami a ja nie bardzo wiem co z tym fantem zrobić.
Jeśli wiecie o co chodzi to proszę pomórzcie.

0
  public ProsteOkno() {
    super("Napis w status bar");
    Container cp = getContentPane(); //zwraca kontener komponentów
    cp.setLayout(null);
    //                  oX,oY, x  , y
    cp.add(imieLabel);
    imieLabel.setBounds(0, 0, 350, 20);
   
    cp.add(start);
    start.setBounds(20,20,20,50);
    start.addActionListener(this);
   // tutaj brakuje }, przydało by się też setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  public void actionPerformed(ActionEvent e){

Jaką masz wersję javy ? Jeśli w miarę nową (>=1.5), to można tak:

    super("Napis w status bar");
    setLayout(null);
    //                  oX,oY, x  , y
    add(imieLabel);
    add(start);
0

Nie jestem pewien, ale kod związany z audio może zgłaszać wyjątki. Użyj bloków try-catch.

0

dobra rozwaliłem dziada :D

dodanie klamry pomogło częściowo...
dalej wywalało błąd pomogło dopiero dopisanie do konstruktora

setSize(400,300);
setVisible(true);

i teraz guzik działa jak należy :D

kod wygląda tak :

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

public class ProsteOkno extends JFrame implements ActionListener {
  JLabel imieLabel = new JLabel("Witaj!!!");; 
  //AudioClip muzyka = getAudioClip(getCodeBase(), "DZWONIE.WAV"); 
   Button start =new Button("START");	
  
  
  public ProsteOkno() {
    super("Napis w status bar");
    Container cp = getContentPane(); //zwraca kontener komponentów
    cp.setLayout(null); 
    setSize(400,300);
    setVisible(true);
    //                  oX,oY, y  , x 
    add(imieLabel);
    imieLabel.setBounds(0, 0, 50, 50);
    
    add(start);
    start.setBounds(20,50,100,20);
    start.addActionListener(this);
   } 
  public void actionPerformed(ActionEvent e){
   Object o = e.getSource();
    //if (o==start) muzyka.loop(); 
      if (o==start) start.setLabel("DZIAŁA");
    
   }	
     
  
	
  public static void main(String[] args) {
    ProsteOkno okno = new ProsteOkno();
    okno.setSize(500, 500);
    okno.setVisible(true);
  }
}

być może sie to komuś przyda.

krzysiumed napisał(a)

Nie jestem pewien, ale kod związany z audio może zgłaszać wyjątki. Użyj bloków try-catch.

do tego jeszcze nie doszedłem ale jak zacznę dochodzić to pewnie sie odezwę :-D
dzięki wszystkim za pomoc i zainteresowanie tematem.

EDIT:

no i stało się faktycznie krzyczy tym wyjątkiem :/

clip=getAudioClip(getCodeBase(),"DZWONIE.WAV");

komunikat wygląda tak :

ProsteOkno.java:8: <identifier> expected
   clip=getAudioClip(getCodeBase(),"DZWONIE.WAV"); 
       ^
1 error

skąd wiadomo jaki wyjątek wpisać w klamry catch

0
  1. Z dokumentacji, jesli nie chcesz uzależniać reakcji od typu wyjątku, to wystarczy
catch{Exception e)
{
    // tu reakcja
}
  1. Na oko to u Ciebie nie ma żadnego wyjątku, tylko jest błąd kompilacji- klasa JFrame nie ma metody getAudoClip(), to jest metoda klasy Aplet.
    pozdrawiam
0
  1. Jak zamykasz program skoro nie dodałeś
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  1. Jak używasz Swinga, to używaj obiektu klasy JButton
   JButton start =new JButton("START");
   ....
      if (o==start) start.setText("DZIAŁA");
0

faktycznie nie bardzo to pomogło .....
dla tego spytam inaczej, jaką metodą powinienem sie posłużyć aby muc "uruchomić" muzykę oraz odtwarzać filmy w oknie.

Cały czas szukam w google.pl ale jest to strasznie wkurzające bo 99% tego co znajdzie to jakieś super bajery dla komórek :-[

0

Wpisz w Googlach Java Media Framework
http://java.sun.com/products/java-media/jmf/

0

he he właśnie do tego samego doszedłem :D
zobaczymy co udam i sie zwojować.
Jak na razie pobrałem źródło jakiegoś przykładowego odtwarzacza ze strony suna jednak podczas kompilacji wywala dużo błędów ...
nie wróży mi to za dobrze.
EDIT:

Poszperałem trochę i wychodzi na to że to również wykorzystuje sie w apletach
dla zainteresowanych :
http://alfa.prz.rzeszow.pl/java/java2001/java18/jmf.htm
czyli szukam dalej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1