Avatar billede extremecode Nybegynder
09. maj 2003 - 19:23 Der er 4 kommentarer og
1 løsning

skifte focus fra JFrame til JInternalFrame

har et lille problem starte mit main "Ydreframe" op
samtidig med at det starter op har jeg en JInternalFrame som starter op oxo.
Men det har ikke focus..det har derimod min Ydreframe.
hvordan får jeg automatisk focus til min JInternalFrame med det samme den ydreframe starter op??

håber i kan hjælpe :)
Avatar billede viht Nybegynder
10. maj 2003 - 00:26 #1
JFrame frame = new JFrame();
    frame.addWindowListener(new WindowAdapter() {
            public void windowOpened(WindowEvent event) {
                komponent.requestFocus();
            }
  });
Avatar billede viht Nybegynder
10. maj 2003 - 00:28 #2
Jeg har eksperimenteret og hørt folk prædike for grabFocus() udenfor en windowListener.. men det virker bar eikke hver gang. Det ovenstående virker hver gang.
Avatar billede extremecode Nybegynder
10. maj 2003 - 10:58 #3
hmmm ok kan ik får det til at virke.. skal den metode sættes i main eller??
smider lige min kode ind det fylder af hø til men skod på det :)

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

public class Main extends JFrame implements ActionListener, FocusListener
{
    private String javaversion =(System.getProperty("java.version"));
    private JDesktopPane desktop;
    private JMenuBar menuBar;
    private JMenu filer, varer, lager, stat, lev,fak ;
    private JMenuItem menuItem;
    private Guisalg salg;
    //private ImageIcon top_icon = new ImageIcon("images/farm.gif");
    //private ImageIcon oversigt_icon = createImageIcon("images/oversigt.gif");
    public static String linie;

    private Main()
    {
       
        //Opretter vinudet med en overskrift og derefter et icon
        super("system");
        //setIconImage(top_icon.getImage());
       
        //Tager de første 3 karaktere i stringen og gemmer dem i en ny string
        String version= javaversion.substring(0,3);
       
        // Tjekker om javaversionen er 1.4 og kreere et nyt look hvis dette er tilfældet ellers hopper den det over
        if(version.equals("1.4"))
        {
        this.setUndecorated(true);
        this.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
        }
       
        //Oprette det ydre vindue med en indent på 50px hele vejen rundt
        int inset = 0;
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        setBounds(inset, inset,screenSize.width, screenSize.height);

        //Opretter GUI.
       
        //bruges til at oprette de indre vinduer
        desktop = new JDesktopPane();
        // tilføjer desktop til contentpane
        setContentPane(desktop);
       
       
        //Tilføjer menupunkt til menubaren
        setJMenuBar(createFiler());
        setJMenuBar(createVarer());
        setJMenuBar(createLager());
        setJMenuBar(createStatistik());
        setJMenuBar(createLeverandoer());
        setJMenuBar(createFaktura());
       
          //Starter salgsvindue op
          createGuiSalg();
          try
        {
            salg.setSelected(true);
           
        }
        catch (Exception e)
        {
            System.out.println("der opstod en fejl");
        }
        salg.requestFocus();
        salg.requestFocusInWindow();
    }

    private JMenuBar createFiler()
    {
        //Opretter en MenuBar
        menuBar = new JMenuBar();
        //Opretter en JMenu
        filer = new JMenu("Filer");
        setBackground(Color.white);
        //Her gør vi så man kan bruge F tasten for at aktivere menuen...man skal dog holde ALT nede for at aktivere menuen
        filer.setMnemonic(KeyEvent.VK_F);
        //Ligger Jmenu på Menubaren
        menuBar.add(filer);
       
        menuItem = new JMenuItem("Databasesti");
        menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, ActionEvent.CTRL_MASK));
        menuItem.setActionCommand("database");
        menuItem.addActionListener(this);
        filer.add(menuItem);
       
        //Opretter andet menupunkt
        menuItem = new JMenuItem("Afslut");
        // Her opretter vi en genvejstast nemlig CTRL+A for et nyt vindue
        menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK));
        //Giver menuitem en actioncommand som en string..dette kan så bruges i actionperformed til at finde ud af
        //hvad det var for et item man trykkede på
        menuItem.setActionCommand("quit");
        menuItem.addActionListener(this);
        filer.add(menuItem);
       
        return menuBar;
    }
   
    private JMenuBar createVarer()
    {
        varer = new JMenu("Vare");
        varer.setMnemonic(KeyEvent.VK_V);
        menuBar.add(varer);
       
        menuItem = new JMenuItem("Opret/Opdater/Slet");
        menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_K, ActionEvent.CTRL_MASK));
        menuItem.setActionCommand("varer");
        menuItem.addActionListener(this);
        varer.add(menuItem);
        return menuBar;
    }
   
    private JMenuBar createLager()
    {

        lager = new JMenu("Lager");
        lager.setMnemonic(KeyEvent.VK_L);
        menuBar.add(lager);
       
        menuItem = new JMenuItem("Opret/Slet");
        menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L, ActionEvent.CTRL_MASK));
        menuItem.setActionCommand("foderlager");
        menuItem.addActionListener(this);
        lager.add(menuItem);

        menuItem = new JMenuItem("Grænseværdier");
        menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, ActionEvent.CTRL_MASK));
        menuItem.setActionCommand("graensevaerdier");
        menuItem.addActionListener(this);
        lager.add(menuItem);
        return menuBar;
    }
   
    private JMenuBar createStatistik()
    {
        stat = new JMenu("Statistik");
        stat.setMnemonic(KeyEvent.VK_S);
        menuBar.add(stat);
       
        menuItem = new JMenuItem("Statistik oversigt");
        menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, ActionEvent.CTRL_MASK));
        menuItem.setActionCommand("dyrlaege");
        menuItem.addActionListener(this);
        stat.add(menuItem);
        return menuBar;   
    }
   
    private JMenuBar createLeverandoer()
    {
        lev = new JMenu("Leverandør");
        lev.setMnemonic(KeyEvent.VK_E);
        menuBar.add(lev);
       
        menuItem = new JMenuItem("Opret/Opdater/Slet");
        menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I, ActionEvent.CTRL_MASK));
        menuItem.setActionCommand("indtaegter");
        menuItem.addActionListener(this);
        lev.add(menuItem);
       
        menuItem = new JMenuItem("Oversigt");
        menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U, ActionEvent.CTRL_MASK));
        menuItem.setActionCommand("udgifter");
        menuItem.addActionListener(this);
        lev.add(menuItem);
       
        return menuBar;
    }
   
    private JMenuBar createFaktura()
    {
        fak = new JMenu("Faktura");
        fak.setMnemonic(KeyEvent.VK_A);
        menuBar.add(fak);
       
        menuItem = new JMenuItem("Opret");
        menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));
        menuItem.setActionCommand("oversigter");
        menuItem.addActionListener(this);
        fak.add(menuItem);
       
        menuItem = new JMenuItem("Oversigt");
        menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));
        menuItem.setActionCommand("oversigter");
        menuItem.addActionListener(this);
        fak.add(menuItem);
        return menuBar;

    }
   

    public void actionPerformed(ActionEvent e)
    {
        //Her finder man så hvilket item der blev trykket på via den førnævnte actioncommand
        if(true)
        {
            salg.show();
        }
        if ("oversigter".equals(e.getActionCommand()))
        {
            //createOversigterFrame();
        }
        else if ("Kvaeg".equals(e.getActionCommand()))
        {
            //createKvaegFrame();
        }
       
        else if ("database".equals(e.getActionCommand()))
        {
            //createGuiSalg();
        }
    }
   
    private void createGuiSalg()
    {
        try{
        salg = new Guisalg();
        //salg.setVisible(true);
        salg.show();
        desktop.add(salg);
        }catch(Exception q){} 
    }
    /*
    private void createOversigterFrame()
    {
        oframe = new Oversigterframe();
        oframe.setVisible(true);
        desktop.add(oframe);
        try
        {
            oframe.setSelected(true);
        }
        catch (Exception e)
        {
            System.out.println("der opstod en fejl");
        }
    }*/
   

    //Afslut program
    private void quit()
    {
        System.exit(0);
    }
   
    // Returnere et ImageIcon eller Null hvis stien til billedet er forkert!!
      private static ImageIcon createImageIcon(String path)
      {
        java.net.URL imgURL = Main.class.getResource(path);
        if (imgURL != null)
        {
            return new ImageIcon(imgURL);
        }
        else
        {
            System.err.println("Kunne ikke finde billedet: " + path);
            return null;
        }
    }
   
    //opretter en popop boks
    public void getError()
    {
        String version= javaversion.substring(0,3);
       
        if(version.equals("1.4"))
        {
        JDialog.setDefaultLookAndFeelDecorated(true);
        }
       
        JOptionPane.showMessageDialog(this,"Denne funktion er ikke implementeret!","PROTOTYPE FEJL!",JOptionPane.ERROR_MESSAGE);
    }
   
   
   
    public static void main(String[] args)
    {
        //Opretter vinduet
        Main frame = new Main();
        frame.addWindowListener(new WindowAdapter() {
            public void windowOpened(WindowEvent event) {
                frame.requestFocus();
            }
  });
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //viser vinduet
        frame.setVisible(true);
        //frame.getKritiskeVaerdier();
    }
}
Avatar billede extremecode Nybegynder
11. maj 2003 - 12:14 #4
ingen der ved det ??
Avatar billede viht Nybegynder
11. maj 2003 - 12:28 #5
Jo, jeg postede løsningen. Du skal bare kalde requestFocus() på den komponent der skal have fokus fra start. Om det er så er JInternalFrame objekt eller noget andet. Ovenfor kalder du det på JFrame.
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