09. maj 2003 - 19:23Der 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??
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.
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);
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);
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(); } }
//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);
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.
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.