lilfire Skrevet 24. mai 2009 Del Skrevet 24. mai 2009 driver å prøver å lage meg en et program da.. hoved vinduet åpnes i fullscreen og alt er som det skal der, men så har jeg en annen Gui klasse, som skal vises når jeg trykket en knapp(rettere sagt et loading vindu) dennen klassen fungerer fint den å vis jeg åpner den aleine. men når hoved vinduet kaller den (setVisble(true)) blir bare vinduet samme som bakgrunnen på hvoedvinduet og helt fryst. provde å sette hovedvinduet (setVisible(false)) men samma skjer da og.. noen som kan tenke seg hva som går feil her? Lenke til kommentar
lilfire Skrevet 24. mai 2009 Forfatter Del Skrevet 24. mai 2009 (endret) Er en del kode da men:P det er i GUI i MyKeyLsitener jeg kaller en metode fra Folder. når jeg trykker 5 så skal programmet søke gjenom en mappe og se om den finner folder.jpg, vis ikke skal den laste ned bilder(alt dette fungerer som det skal) men selve det grafiske fryser. har lagt inn noen System.out her og der og ser at programmet kjører pent videre. selv om alt på skjermen er "fryst" GUI. package movieTime; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Frame; import java.awt.GridLayout; import java.awt.Toolkit; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Timer; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.JTextPane; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; public class GUI extends JFrame{ private JButton meny = new JButton("meny"); private JButton oversikt = new JButton("oversikt"); private JList filmer; private JTextField tekstFelt; private JLabel tekst; private long startTime = 0; private int pressed = 0; private long tmp; private int key = -1; private int lastKey =-1; private String skriv = ""; private String skrivtmp = ""; private Folder dir; private Loading load; private String[] filmene; private ArrayList<String[]> movies = new ArrayList<String[]>(); private JLabel bilde; private JLabel header = new JLabel(); private int screenHeight; private int screenWidth; private JLabel titel = new JLabel(); private JLabel regi = new JLabel(); private JLabel sjanger = new JLabel(); private JLabel rating = new JLabel(); private JTextArea skuspiller = new JTextArea(); private JTextArea info = new JTextArea(); private Pic img; private Trailer trailer; public GUI(){ screenHeight = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight(); screenWidth = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth(); setLayout(new BorderLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setUndecorated(true); setExtendedState(Frame.MAXIMIZED_BOTH); pack(); load = new Loading(); img = new Pic(load); dir = new Folder(load, new File("D:\\My Documents\\Filmer"), this, img); trailer = new Trailer(); movies = dir.movies(); filmene = new String[movies.size()]; for (int i = 0; i < movies.size(); i++){ int hjelper = movies.get(i)[0].lastIndexOf('\\'); filmene = movies.get(i)[0].substring(hjelper+1, movies.get(i)[0].length()-4); } tekstFelt = new JTextField(); filmer = new JList(filmene); filmer.setSelectedIndex(0); filmer.addListSelectionListener(new ListeLytter()); Font headerFont = new Font("Serif", Font.BOLD, 40); int hjelper = movies.get(0)[0].lastIndexOf('\\'); header.setText(movies.get(0)[0].substring(hjelper+1, movies.get(0)[0].length()-4)); header.setFont(headerFont); //add add(new TopPanel(), BorderLayout.NORTH); add(new MenyPanel(), BorderLayout.WEST); add(new OversiktPanel(), BorderLayout.CENTER); } public void setTekst(String tekst){ this.tekst.setText(tekst); } private class TopPanel extends JPanel{ public TopPanel(){ setBackground(new Color(0,0,255)); setLayout(new GridLayout(1, 6)); Font myFont = new Font("Serif", Font.BOLD, 24); JLabel knapp1 = new JLabel("Vis/Skjul sette filmer"); knapp1.setFont(myFont); knapp1.setIcon(new ImageIcon("files/img/1.png")); JLabel knapp2 = new JLabel("Merk film som sett"); knapp2.setFont(myFont); knapp2.setIcon(new ImageIcon("files/img/1.png")); JLabel knapp3 = new JLabel("Rediger film"); knapp3.setFont(myFont); knapp3.setIcon(new ImageIcon("files/img/1.png")); JLabel knapp4 = new JLabel("Søk"); knapp4.setFont(myFont); knapp4.setIcon(new ImageIcon("files/img/1.png")); JLabel knapp5 = new JLabel("Oppdater filmer"); knapp5.setFont(myFont); knapp5.setIcon(new ImageIcon("files/img/1.png")); JLabel knapp6 = new JLabel("Se Trailer"); knapp6.setFont(myFont); knapp6.setIcon(new ImageIcon("files/img/1.png")); JLabel knapp7 = new JLabel("Innstillinger"); knapp7.setFont(myFont); knapp7.setIcon(new ImageIcon("files/img/1.png")); add(knapp1); add(knapp2); add(knapp3); add(knapp4); add(knapp5); add(knapp6); add(knapp7); } } private class MenyPanel extends JPanel{ public MenyPanel(){ this.setBorder(BorderFactory.createLineBorder(Color.black)); setBackground(new Color(0,0,200)); int width = (screenWidth * 20) / 100; Font myFont = new Font("Serif", Font.BOLD, 24); filmer.setBackground(new Color(0,0,200)); filmer.setFont(myFont); filmer.setForeground(Color.RED); filmer.addKeyListener(new MyKeyLsitener()); JScrollPane menyScroll = new JScrollPane(filmer); menyScroll.setPreferredSize(new Dimension(width, screenHeight-70)); menyScroll.setBorder(null); add(menyScroll); } } private class OversiktPanel extends JPanel{ public OversiktPanel(){ setBackground(new Color(50,50,255)); BorderLayout layout = new BorderLayout(); setLayout(layout); layout.setHgap(100); layout.setVgap(40); int width = (screenWidth * 80) / 100; bilde = new JLabel(); ImageIcon icon = null;; try{ icon = new ImageIcon(movies.get(filmer.getSelectedIndex())[1]); bilde.setIcon(icon); }catch (Exception e){ System.out.println("bilde ikke funnet"); } //header JPanel headerPanel = new JPanel(); header.setForeground(new Color(0,0,0)); headerPanel.add(header); headerPanel.setBackground(new Color(50,50,255)); //bilde JPanel bildePanel = new JPanel(); bildePanel.setBackground(new Color(50,50,255)); JLabel space = new JLabel(); space.setPreferredSize(new Dimension(50, 70)); bildePanel.add(space); bildePanel.add(bilde); skuspiller.setLineWrap(true); skuspiller.setBackground(new Color(50,50,255)); //*****TESTDATA***** String testDataFirst = "- "; String testData = testDataFirst + "Robert Carlyle as Don, Catherine McCormack as Alice, Rose Byrne as Scarlet, Jeremy Renner as Doyle, Harold Perrineau as Flynn, Idris Elba as Stone, Imogen Poots as Tammy, Mackintosh Muggleton as Andy, Amanda Walker as Sally, Shahid Ahmed as Jacob, Garfield Morgan as Geoff, Emily Beecham as Karen, Beans El-Balawi as Boy in Cottage, Meghan Popiel as DLR Soldier, Stewart Alexander as Military Officer"; testData = testData.replaceAll(", ", "\n- "); String[] filmInfo = {"Tittel","28 Weeks Later", " ", "Sjanger","Horror | Sci-Fi | Thriller", " " ,"Regi","Juan Carlos Fresnadillo"," ", "Karakter","7.2"}; //************* skuspiller.setText(testData); JPanel infoPanel = new JPanel(); infoPanel.setBackground(new Color(50,50,255)); infoPanel.setPreferredSize(new Dimension(width-space.getWidth()-icon.getIconWidth()-100, icon.getIconHeight())); infoPanel.setLayout(new GridLayout(1,3)); Font infoFont = new Font("Serif", Font.BOLD, 24); //panel3 JPanel infoPanel3 = new JPanel(); infoPanel3.setBackground(new Color(50,50,255)); infoPanel3.setLayout(new GridLayout(7,1)); titel.setFont(infoFont); sjanger.setFont(infoFont); regi.setFont(infoFont); rating.setFont(infoFont); titel.setForeground(new Color(0,0,0)); sjanger.setForeground(new Color(0,0,0)); regi.setForeground(new Color(0,0,0)); rating.setForeground(new Color(0,0,0)); JPanel tittel = new JPanel(); JPanel sjangerPanel = new JPanel(); JPanel regiPanel = new JPanel(); JPanel karakter = new JPanel(); tittel.setLayout(new GridLayout(2,1)); tittel.setBackground(new Color(50,50,255)); sjangerPanel.setLayout(new GridLayout(2,1)); sjangerPanel.setBackground(new Color(50,50,255)); regiPanel.setLayout(new GridLayout(2,1)); regiPanel.setBackground(new Color(50,50,255)); karakter.setLayout(new GridLayout(2,1)); karakter.setBackground(new Color(50,50,255)); JLabel iTittel = new JLabel("Tittel"); JLabel iSjanger = new JLabel("Sjanger"); JLabel iRegi = new JLabel("Regi"); JLabel iKarakter = new JLabel("Karakter"); iTittel.setFont(infoFont); iSjanger.setFont(infoFont); iKarakter.setFont(infoFont); iRegi.setFont(infoFont); iTittel.setForeground(new Color(255,255,255)); iSjanger.setForeground(new Color(255,255,255)); iKarakter.setForeground(new Color(255,255,255)); iRegi.setForeground(new Color(255,255,255)); tittel.add(iTittel); tittel.add(titel); sjangerPanel.add(iSjanger); sjangerPanel.add(sjanger); regiPanel.add(iRegi); regiPanel.add(regi); karakter.add(iKarakter); karakter.add(rating); rating.setText("7,1"); titel.setText("28 Weeks Later"); sjanger.setText("Horror | Sci-Fi | Thriller"); regi.setText("Juan Carlos Fresnadillo"); infoPanel3.add(tittel); infoPanel3.add(sjangerPanel); infoPanel3.add(regiPanel); infoPanel3.add(karakter); //panel4 JPanel infoPanel4 = new JPanel(); JLabel iSkuspiller = new JLabel("Skuspillere"); Color fg = new Color(255,255,255); iSkuspiller.setFont(infoFont); iSkuspiller.setForeground(fg); infoPanel4.setBackground(new Color(50,50,255)); BorderLayout layout2 = new BorderLayout(); layout2.setVgap(10); infoPanel4.setLayout(layout2); infoPanel4.add(iSkuspiller, BorderLayout.NORTH); skuspiller.setFont(infoFont); skuspiller.setForeground(new Color(0,0,0)); infoPanel4.add(skuspiller, BorderLayout.CENTER); infoPanel.add(bildePanel); infoPanel.add(infoPanel3); infoPanel.add(infoPanel4); //panel2 JPanel infoPanel2 = new JPanel(); infoPanel2.setBackground(new Color(50,50,255)); info.setText("28 uker senere, oppfølgeren til den enormt populære 28 dager senere, plukker opp tråden seks måneder etter at det forferdelige viruset har utslettet alt normalt liv på det britiske fastlandet. Den amerikanske hæren erklærer kampen mot smitten for vunnet og at gjenoppbyggingen av landet kan starte. Når den første strømmen av flyktninger vender tilbake, blir en familie gjenforent - men en av dem bærer uten å vite det på en fryktelig hemmelighet. Viruset er ikke ødelagt, og denne gangen er det farligere enn noensinne."); info.setFont(infoFont); info.setLineWrap(true); info.setForeground(new Color(255,255,255)); info.setPreferredSize(new Dimension(width-100, screenHeight - icon.getIconHeight()-200)); info.setBackground(new Color(50,50,255)); infoPanel2.add(info); //add add(headerPanel, BorderLayout.NORTH); add(infoPanel, BorderLayout.CENTER); add(infoPanel2, BorderLayout.SOUTH); } } private class ListeLytter implements ListSelectionListener{ public void valueChanged(ListSelectionEvent e) { int hjelper = movies.get(filmer.getSelectedIndex())[0].lastIndexOf('\\'); header.setText(movies.get(filmer.getSelectedIndex())[0].substring(hjelper+1, movies.get(filmer.getSelectedIndex())[0].length()-4)); File bildefil = null; try{ bildefil = new File(movies.get(filmer.getSelectedIndex())[1]); }catch (Exception e1){ System.out.println("feil med bilde"); } if (bildefil != null){ bilde.setIcon(new ImageIcon(movies.get(filmer.getSelectedIndex())[1])); }else{ System.out.println("feil med bilde"); bilde.setIcon(null); } titel.setText(movies.get(filmer.getSelectedIndex())[0].substring(hjelper+1, movies.get(filmer.getSelectedIndex())[0].length()-4)); //fiks når databsen kommer opp sjanger.setText("skumel film"); regi.setText("pappa"); rating.setText("9,9"); info.setText("mamma'n min er tøff"); skuspiller.setText("pappa\nmamma\nmeg"); } } private class Mobilekeys implements KeyListener{ public void keyPressed(KeyEvent e){ if(e.getKeyCode() == 49)key = 1; else if(e.getKeyCode() == 50)key = 2; else if(e.getKeyCode() == 51)key = 3; else if(e.getKeyCode() == 52)key = 4; else if(e.getKeyCode() == 53)key = 5; else if(e.getKeyCode() == 54)key = 6; else if(e.getKeyCode() == 55)key = 7; else if(e.getKeyCode() == 56)key = 8; else if(e.getKeyCode() == 57)key = 9; else if(e.getKeyCode() == 48)key = 0; else if(e.getKeyCode() == 10)key = 100; //enter else key = -1; if(pressed == 0){ startTime = System.currentTimeMillis(); lastKey = key; }else{ tmp = System.currentTimeMillis(); if(lastKey != key){ pressed = 0; skriv += skrivtmp; skrivtmp = ""; } } pressed++; if(tmp - startTime < 1000 ){ startTime = tmp; if(pressed ==1)pressed =2; if(key == 2){ lastKey =2; if(pressed ==2){ skrivtmp = "a"; setTekst(skriv + skrivtmp); }else if (pressed == 3){ skrivtmp = "b"; setTekst(skriv + skrivtmp); }else if(pressed == 4){ skrivtmp = "c"; setTekst(skriv + skrivtmp); }else if(pressed ==5){ skrivtmp = "2"; setTekst(skriv + skrivtmp); pressed = 1; } }else if(key == 3){ lastKey = 3; if(pressed ==2){ skrivtmp = "d"; setTekst(skriv + skrivtmp); }else if (pressed == 3){ skrivtmp = "e"; setTekst(skriv + skrivtmp); }else if(pressed == 4){ skrivtmp = "f"; setTekst(skriv + skrivtmp); }else if(pressed ==5){ skrivtmp = "3"; setTekst(skriv + skrivtmp); pressed = 1; } }else if(key == 4){ lastKey = 4; if(pressed ==2){ skrivtmp = "g"; setTekst(skriv + skrivtmp); }else if (pressed == 3){ skrivtmp = "h"; setTekst(skriv + skrivtmp); }else if(pressed == 4){ skrivtmp = "i"; setTekst(skriv + skrivtmp); }else if(pressed ==5){ skrivtmp = "4"; setTekst(skriv + skrivtmp); pressed = 1; } }else if(key == 5){ lastKey = 5; if(pressed ==2){ skrivtmp = "j"; setTekst(skriv + skrivtmp); }else if (pressed == 3){ skrivtmp = "k"; setTekst(skriv + skrivtmp); }else if(pressed == 4){ skrivtmp = "l"; setTekst(skriv + skrivtmp); }else if(pressed ==5){ skrivtmp = "5"; setTekst(skriv + skrivtmp); pressed = 1; } }else if(key == 6){ lastKey = 6; if(pressed ==2){ skrivtmp = "m"; setTekst(skriv + skrivtmp); }else if (pressed == 3){ skrivtmp = "n"; setTekst(skriv + skrivtmp); }else if(pressed == 4){ skrivtmp = "o"; setTekst(skriv + skrivtmp); }else if(pressed ==5){ skrivtmp = "6"; setTekst(skriv + skrivtmp); pressed = 1; } }else if(key == 7){ lastKey = 7; if(pressed ==2){ skrivtmp = "p"; setTekst(skriv + skrivtmp); }else if (pressed == 3){ skrivtmp = "q"; setTekst(skriv + skrivtmp); }else if(pressed == 4){ skrivtmp = "r"; setTekst(skriv + skrivtmp); }else if(pressed == 5){ skrivtmp = "s"; setTekst(skriv + skrivtmp); }else if(pressed ==6){ skrivtmp = "7"; setTekst(skriv + skrivtmp); pressed = 1; } }else if(key == 8){ lastKey = 8; if(pressed ==2){ skrivtmp = "t"; setTekst(skriv + skrivtmp); }else if (pressed == 3){ skrivtmp = "u"; setTekst(skriv + skrivtmp); }else if(pressed == 4){ skrivtmp = "v"; setTekst(skriv + skrivtmp); }else if(pressed ==5){ skrivtmp = "8"; setTekst(skriv + skrivtmp); pressed = 1; } }else if(key == 9){ lastKey = 9; if(pressed ==2){ skrivtmp = "w"; setTekst(skriv + skrivtmp); }else if (pressed == 3){ skrivtmp = "x"; setTekst(skriv + skrivtmp); }else if(pressed == 4){ skrivtmp = "y"; setTekst(skriv + skrivtmp); }else if(pressed == 5){ skrivtmp = "z"; setTekst(skriv + skrivtmp); }else if(pressed ==6){ skrivtmp = "9"; setTekst(skriv + skrivtmp); pressed = 1; } }else if(key == 0){ skriv += " "; setTekst(skriv); }else if(key == 100){ System.out.println("enter"); skriv = ""; setTekst(skriv); }else{ System.out.println("knapp ikke lagret, kode: " + e.getKeyCode()); } }else{ pressed = 0; if(skrivtmp != null) setTekst(skriv += skrivtmp); keyPressed(e); } } public void keyReleased(KeyEvent e) {} public void keyTyped(KeyEvent arg0) {} } private class MyKeyLsitener implements KeyListener{ public void keyPressed(KeyEvent e) { if(e.getKeyCode() == 49)key = 1; else if(e.getKeyCode() == 50)key = 2; else if(e.getKeyCode() == 51)key = 3; else if(e.getKeyCode() == 52)key = 4; else if(e.getKeyCode() == 53)key = 5; else if(e.getKeyCode() == 54)key = 6; else if(e.getKeyCode() == 55)key = 7; else if(e.getKeyCode() == 56)key = 8; else if(e.getKeyCode() == 57)key = 9; else if(e.getKeyCode() == 48)key = 0; else if(e.getKeyCode() == 27)key = 10; //esc else if(e.getKeyCode() == 40)key = -100; //piltast else if(e.getKeyCode() == 28)key = 1000; //piltast if (key == 1){ System.out.println("du trykket 1"); }else if (key == 2){ System.out.println("du trykket 2"); }else if (key == 3){ System.out.println("du trykket 3"); }else if (key == 4){ System.out.println("du trykket 4"); }else if (key == -100){ }else if (key == 100){ }else if (key == 5){ System.out.println("du trykket 5"); try { dir.scannFolder(); } catch (Exception e1) { System.out.println("en feil har oppstått ved scanning av folder"); e1.printStackTrace(); } }else if (key == 6){ System.out.println("du trykket 6"); }else if (key == 10){ System.out.println("du trykket esc, hade"); System.exit(0); }else{ System.out.println("ukjent key, keycode" + e.getKeyCode()); } } public void keyReleased(KeyEvent e) {} public void keyTyped(KeyEvent e) {} } } Folder package movieTime; import java.io.File; import java.io.IOException; import java.util.ArrayList; public class Folder{ private ArrayList<String> bildertmp = new ArrayList<String>(); private ArrayList<String[]> movies = new ArrayList<String[]>(); private String[] bilder; private File myDir; private boolean foundImage; private Loading load; private Pic img; private GUI gui; public Folder(Loading load, File folder, GUI gui, Pic img){ this.load = load; myDir = folder; this.gui = gui; this.img = img; } public void scannFolder(){ gui.setVisible(false); foundImage = false; load.setVisible(true); if( myDir.exists() && myDir.isDirectory()){ load.setInfo(myDir.getAbsolutePath()); File[] files = myDir.listFiles(); String name =""; for(int i=0; i < files.length; i++){ load.setInfo("Loading"); if(files.isDirectory()){ File[] files2 = files.listFiles(); for(int j=0; j < files2.length; j++){ foundImage = false; String filename = files2[j].getName(); if(filename.equalsIgnoreCase("folder.jpg")){ foundImage = true; System.out.println("bilde funnet"); break; } //System.out.println(path); } String path = null; for(int j=0; j < files2.length; j++){ String filename = files2[j].getName(); int avi = filename.indexOf(".avi"); int mpg = filename.indexOf(".mpg"); int mkv = filename.indexOf(".mkv"); int srt = filename.indexOf(".srt"); int sub = filename.indexOf(".sub"); int jpg = filename.indexOf(".jpg"); if(!filename.equals("Thumbs.db") && sub ==-1 && srt == -1 && jpg ==-1){ if(avi !=-1 || mpg !=1 || mkv != -1){ path = files2[j].getPath().substring(0, files2[j].getPath().length() - filename.length()); name = filename.substring(0, filename.length()-4); break; } } } if(!foundImage){ File move = null; System.out.println("bilde IKKE funnet"); for(int j=0; j < files2.length; j++){ String filename = files2[j].getName(); int avi = filename.indexOf(".avi"); int mpg = filename.indexOf(".mpg"); int mkv = filename.indexOf(".mkv"); int srt = filename.indexOf(".srt"); int sub = filename.indexOf(".sub"); if(!filename.equals("Thumbs.db") && sub ==-1 && srt == -1){ if(avi !=-1 || mpg !=1 || mkv != -1){ path = files2[j].getPath().substring(0, files2[j].getPath().length() - filename.length()); name = filename.substring(0, filename.length()-4); try{ img.doAll(name, path); }catch (NullPointerException e){ e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } move = new File(path+"/folder.jpg"); break; } } } for(int j=0; j < files2.length; j++){ String filename = files2[j].getName(); if(filename.equalsIgnoreCase("folder.jpg")){ foundImage = true; System.out.println("bilde funnet"); break; } } } if(!foundImage){ File tmp = new File("files/tmp/thumbnails"); if( tmp.exists() && tmp.isDirectory()){ File[] tmpImages = tmp.listFiles(); if(tmpImages.length == 0){ System.out.println("Ingen bilder funnet for" + name); } else if(tmpImages.length == 1){ load.setInfo("treff funnet, legger til bilde"); System.out.println("Flytting"+ tmpImages[0].renameTo(new File(path+"folder.jpg"))); }else{ for(int p=0; p < tmpImages.length; p++){ if(!tmpImages[p].getName().equals("index.html")){ bildertmp.add(tmpImages[p].toString()); } } bilder = new String[bildertmp.size()]; for (int p = 0; p < bildertmp.size(); p++){ bilder[p] = bildertmp.get(p); } ChoosePic pic = null; pic = new ChoosePic(bilder, name); load.setVisible(false); pic.setVisible(true); while(!pic.fileSelected){ } File imageDir = new File("files/tmp"); String filename; boolean foundMatch = false; if( imageDir.exists() && imageDir.isDirectory()){ String titel = pic.selectedFile; titel = titel.substring(21); File[] images = imageDir.listFiles(); for(int p=0; p < images.length; p++){ filename = images[p].getName(); if(filename.equalsIgnoreCase(titel)){ foundMatch = true; } } if(foundMatch){ System.out.println("bilde funnet i tmp og blir flyttet"); for(int p=0; p < images.length; p++){ filename = images[p].getName(); if(!filename.equalsIgnoreCase(titel)){ if (!images[p].isDirectory()) images[p].delete(); }else{ File rename = new File(files.getAbsoluteFile()+"/folder.jpg"); images[p].renameTo(rename); images[p].delete(); } } }else{ System.out.println("finner ikke bilde i tmp"); } } for(int p=0; p < tmpImages.length; p++){ tmpImages[p].delete(); } pic.setVisible(false); load.setInfo("Bilde lagt til"); load.setVisible(true); pic.fileSelected = false; pic.selectedFile = ""; bildertmp.clear(); } } } } } load.setInfo("Loading"); load.setVisible(false); gui.setVisible(true); } } public ArrayList<String[]> movies(){ int hjelper = -1; File[] files = myDir.listFiles(); for(int i=0; i < files.length; i++){ //System.out.println("****"+files+"******"); if(files.isDirectory()){ File[] files2 = files.listFiles(); String[] movie = new String[2]; for(int j=0; j < files2.length; j++){ //System.out.println(files2[j].getAbsolutePath()); boolean avi = files2[j].getAbsolutePath().matches("(?i).*"+".avi"+".*"); boolean mpg = files2[j].getAbsolutePath().matches("(?i).*"+".mpg"+".*"); boolean mkv = files2[j].getAbsolutePath().matches("(?i).*"+".mkv"+".*"); boolean jpg = files2[j].getAbsolutePath().matches("(?i).*"+".jpg"+".*"); if(avi || mpg || mkv){ movie[0] = files2[j].getAbsolutePath(); } if(jpg){ movie[1] = files2[j].getAbsolutePath(); } } movies.add(movie); } } return movies; } } Loading package movieTime; import java.awt.Color; import java.awt.GridLayout; import java.awt.Toolkit; import java.io.IOException; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class Loading extends JFrame{ private JLabel loading; private JLabel info; public Loading(){ int height = 100; int width = 200; int screenHeight = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight(); int screenWidth = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth(); setLayout(new GridLayout(2,1)); setBackground(new Color(255,255,255)); this.setBounds((screenWidth/2)-(width/2), (screenHeight/2)-(height/2), width, height); setUndecorated(true); info = new JLabel("Loading"); loading = new JLabel(); loading.setIcon(new ImageIcon("files/img/loading.gif")); add(new ImagePanel()); add(new InfoPanel()); } private class ImagePanel extends JPanel{ public ImagePanel(){ setBackground(new Color(255,255,255)); add(loading); } } private class InfoPanel extends JPanel{ public InfoPanel(){ setBackground(new Color(255,255,255)); add(info); } } public void setInfo(String info){ this.info.setText(info); } } Endret 24. mai 2009 av lilfire Lenke til kommentar
TeisL Skrevet 24. mai 2009 Del Skrevet 24. mai 2009 hei, har ikke hartt tid til å se skikkelig på koden din ennå, men høres ut som et lignede problem jeg har hatt. Sjekk ut om det hjelper ved å bruke tråder. Så når du starter en ny frame, starter du også en ny tråd. Her er en link hvis du ikke har vært borti tråder før: http://www.javabeginner.com/learn-java/java-threads-tutorial Skal se mer på koden din hvis det ikke hjelper Lenke til kommentar
Cyberfrog Skrevet 25. mai 2009 Del Skrevet 25. mai 2009 Ja, hvis du utfører en tung/tidkrevende jobb (som nedlasting av ting kan være) i GUI-tråden, så vil GUI tilsynelatende fryse til jobben er utført. Hvis dette hørtes relevant ut: - http://java.sun.com/javase/6/docs/api/java...wingWorker.html kan kanskje brukes. - Se også: http://java.sun.com/docs/books/tutorial/ui...sc/threads.html Merk: Har ikke studert koden. Lenke til kommentar
lilfire Skrevet 25. mai 2009 Forfatter Del Skrevet 25. mai 2009 tenkte litt på det selv og, men kan ikke noe om tråder enda, men tingen er at gui ikke kommer tilbake selv når alt er ferdig lasta ned og behandla. så lit rart det og, men kan lese litt om tråder og se om det løser noe.. takker for hjelpen så langt:) Lenke til kommentar
Unlimited LTD Skrevet 25. mai 2009 Del Skrevet 25. mai 2009 En enkel måte å lage en ny tråd, for så å kjøre den er å bruke EvenQueue. EventQueue.invokeLater(new Runnable(){ public void run(){ //Kode her } } Bruk den gjerne når du skal initiere GUI'en din for å holde slike oppgaver i en egen tråd. Lenke til kommentar
lilfire Skrevet 25. mai 2009 Forfatter Del Skrevet 25. mai 2009 har lest fort gjennom det nå og testa meg fram, og det gjorde susen det:D skal gå litt mer i dybden på det nå så jeg skjønner hva jeg gjør:P men tusen takk for hjelpen:) Lenke til kommentar
TeisL Skrevet 25. mai 2009 Del Skrevet 25. mai 2009 tenkte litt på det selv og, men kan ikke noe om tråder enda, men tingen er at gui ikke kommer tilbake selv når alt er ferdig lasta ned og behandla. så lit rart det og, men kan lese litt om tråder og se om det løser noe.. takker for hjelpen så langt:) hei, trenger ikke være så tung jobb egentlig for at alt skal fryse. Da jeg måtte bruke tråder for første gang var med en mp3 spiller. Der frøs hele applikasjonen bare jeg kjørte .start(). Den kom aldri tilbake uansett hvor lenge den fikk stå. Så vil tippe tråder løser problemet ditt. Lenke til kommentar
blackbrrd Skrevet 5. juni 2009 Del Skrevet 5. juni 2009 En enkel måte å lage en ny tråd, for så å kjøre den er å bruke EvenQueue. EventQueue.invokeLater(new Runnable(){ public void run(){ //Kode her } } Bruk den gjerne når du skal initiere GUI'en din for å holde slike oppgaver i en egen tråd. evt: new Thread() { public void run() { // putt kode her } }.start(); Lenke til kommentar
pgdx Skrevet 6. juni 2009 Del Skrevet 6. juni 2009 Jeg vet du ikke ber om dette, men det er mye i den koden som kan gjøres bedre og på mange færre linjer. Ta dette eksempelet: if (e.getKeyCode() == 49) key = 1; else if (e.getKeyCode() == 50) key = 2; else if (e.getKeyCode() == 51) key = 3; else if (e.getKeyCode() == 52) key = 4; else if (e.getKeyCode() == 53) key = 5; else if (e.getKeyCode() == 54) key = 6; else if (e.getKeyCode() == 55) key = 7; else if (e.getKeyCode() == 56) key = 8; else if (e.getKeyCode() == 57) key = 9; else if (e.getKeyCode() == 48) key = 0; else if (e.getKeyCode() == 10) key = 100; // enter else key = -1; Og se det opp mot dette eksempelet: key = e.getKeyCode() - 48; if (key < 0 || key > 9) { key = -1; // some weird case } if (e.getKeyCode() == 10) { key = 100; // enter } I tillegg så har du ~180 linjer med if/else if-blokker som sikkert kunne vært automatisert litt bedre. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå