03. januar 2004 - 21:37Der er
85 kommentarer og 2 løsninger
Vise baggrundsfarve i vindue
Hejsa
Jeg har tre spørgsmål. Jeg er begyndt at læse toturials på javabog.dk, og der skriver de:
vindue.addWindowListener(new LukProgram()); lukker programmet, men det kan jeg ikke rigtig få til at virke?
Derudover prøver jeg at sætte en baggrundsfarve i mit vindue via. vindue.setBackground(Color.BLACK); - men da det ikke virker, så tror jeg, at jeg skriver det forkert. Hvordan skal det gøres rigtigt?
Og til sidst, så vil jeg gerne spørge, om det er muligt, at der vises et billed på skærmen, hvor der fx. efter 5. sek. kommer et nyt?
Nu har jeg tilfældigvis et billed af Britney Spears(det første jeg ligeså), så programmet går ud på at vise et billed af hende i et vindue. Det vinduer er jeg som sagt igang med at lege med.
public class Britneyvisermain { public static void main(String args[]) {
Men Mikkel, med f.show, der bliver baggrunden ikke baggrunden i mit vindue, men åbner et selvstændigt. Skal jeg kalde tingene inde under show kommandoen på en eller anden måde, eller hvad?
public class Britneyviser extends JFrame { public Britneyviser() { this.getContentPane().setBackground(Color.black); // plus alt det andet du har i constructoren! } }
Men har du ikke et lille konkret eksempel på brug af swing timer, da jeg ikke kan køre filen, jeg har downloade fra siden, du gav mig, i min prompt, da jeg mangler to filer.
Hvis nogle vils e sorte firkanter og også kunen lukke vinduerne igen:
import java.awt.*; import java.awt.event.*;
public class Black extends Frame { public Black() { setBackground(Color.black); setSize(100, 100); addWindowListener(new WindowAdapter() { public void windowClosing( WindowEvent e ) { System.exit( 0 ); } }); }
public static void main(String[] args) { Black f = new Black(); f.show(); } }
import javax.swing.*; import java.awt.*;
public class JBlack extends JFrame { public JBlack() { getContentPane().setBackground(Color.black); setSize(100, 100); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
public static void main(String[] args) { JBlack f = new JBlack(); f.show(); } }
public class BlackAndWhite extends JFrame implements ActionListener { private static boolean black; public BlackAndWhite() { black = true; getContentPane().setBackground(black?Color.black:Color.white); setSize(100, 100); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); (new Timer(2000, this)).start(); } public void actionPerformed(ActionEvent evt) { black = !black; getContentPane().setBackground(black?Color.black:Color.white); } public static void main(String[] args) { BlackAndWhite f = new BlackAndWhite(); f.show(); } }
Altså, hvis dette skal udskiftes med billeder, så skal getContentPane().setBackground(black?Color.black:Color.white); udskiftes med de billeder, jeg skal loade - eller hvad?
public class BlackAndWhite extends JFrame implements ActionListener { private static boolean black; public BlackAndWhite() { black = true; getContentPane().setBackground(black?Color.black:Color.white); setSize(100, 100); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); (new Timer(2000, this)).start(); } public void actionPerformed(ActionEvent evt) { black = !black; getContentPane().setBackground(black?Color.black:Color.white); } public static void main(String[] args) { BlackAndWhite f = new BlackAndWhite(); f.show(); } }
public class billedviser extends JFrame implements ActionListener { private static boolean black; //dette skal jeg vel aendre til viser eller lign? public BlackAndWhite() { black = true; //Dette skal så vel også være viser = true; ? Image billed1 = Toolkit.getDefaultToolkit().getImage("billed.jpg"); setSize(100, 100); g.drawImage(billed1, 0, 0, this)?g.drawImage(billed2, 0, 0, this); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); (new Timer(2000, this)).start(); } // skal jeg bruge dette? public void actionPerformed(ActionEvent evt) { black = !black; getContentPane().setBackground(black?Color.black:Color.white); } public static void main(String[] args) { BlackAndWhite f = new BlackAndWhite(); f.show(); } }
public class TestClass extends JFrame implements ActionListener { private int n = 0; // antal af billeder! private ImageIcon[] billeder = new ImageIcon[5];
private JLabel label = new JLabel();
public TestClass() { billeder[0] = new ImageIcon(Toolkit.getDefaultToolkit().getImage("billede1.jpg")); billeder[1] = new ImageIcon(Toolkit.getDefaultToolkit().getImage("billede2.jpg")); billeder[2] = new ImageIcon(Toolkit.getDefaultToolkit().getImage("billede3.jpg")); billeder[3] = new ImageIcon(Toolkit.getDefaultToolkit().getImage("billede4.jpg")); billeder[4] = new ImageIcon(Toolkit.getDefaultToolkit().getImage("billede5.jpg"));
label.setIcon(billeder[n]);
getContentPane().add(label, BorderLayout.CENTER); setSize(100, 100); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); (new Timer(2000, this)).start(); }
public void actionPerformed(ActionEvent evt) { label.setIcon(billeder[n % billeder.length]); n++; }
public static void main(String[] args) { TestClass f = new TestClass(); f.show(); } }
Nej, et JLabel er en swing-komponent. JLabel har bare den fordel at man kan indsætte et billede i det. Du kan ligeledes skrive en tekst vha. setText(String tekst).
//Opretter klassen og arver fra JFrame public class Digitalur extends JFrame implements ActionListener { Date date = new Date();
//Opretter en privat Label, der skal bruges til tekst. private JLabel label = new JLabel();
//Opretter en funktion ved navn Digitalur. //Denne udskriver en string //Sætter vinduets størrelse til 1024x768 //Og gør det muligt at lukke vinduet ved at trykke på x'et i hjørnet. public Digitalur() { getContentPane().add(label, BorderLayout.CENTER); setSize(200, 100); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); (new Timer(1000, this)).start(); }
public void actionPerformed(ActionEvent evt) { Date date = new Date(); label.setText(date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds()); }
Note: C:\Documents and Settings\Mikael\Dokumenter\JAVA\projekter\Ur\Digitalt\Digitalur.java uses or overrides a deprecated API. Note: Recompile with -deprecation for details.
C:\Documents and Settings\Mikael\Dokumenter\JAVA\projekter\Ur\Digitalt\Digitalur.java:28: cannot resolve symbol symbol : class Date location: class Digitalur String s = sdf.format(new Date());
Ah, jeg kom til at remove util.Date. Nu virker det. Takker
Synes godt om
Ny brugerNybegynder
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.