Gå til innhold

problemer med GUI (fryst bilde)


Anbefalte innlegg

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
Videoannonse
Annonse

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 av lilfire
Lenke til kommentar

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

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
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
  • 2 uker senere...
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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...