2012-01-07 12 views
6

Necesito programa - JFrame principal tiene 2 botonescómo crear una ventana con dos botones que se abrirá una nueva ventana

  1. botón
  2. button2

Cuando hago clic botón se tiene que abrir una nueva ventana de JFrame con nuevas opciones, mientras que si hago clic en button2, abra otra ventana.

En estas 2 nuevas ventanas debo agregar botones como el siguiente y el anterior.

Tengo un problema cuando abro el botón 1, luego abro 2 ventanas y el JFrame principal aún está visible.

Mi primer programa en el columpio:

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

public class example { 

public static void main (String[] args){  
    JFrame frame = new JFrame("Test"); 
    frame.setVisible(true); 
    frame.setSize(500,200); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JPanel panel = new JPanel(); 
    frame.add(panel); 
    JButton button = new JButton("hello agin1"); 
    panel.add(button); 
    button.addActionListener (new Action1()); 

    JButton button2 = new JButton("hello agin2"); 
    panel.add(button2); 
    button.addActionListener (new Action2()); 
} 
static class Action1 implements ActionListener {   
    public void actionPerformed (ActionEvent e) {  
    JFrame frame2 = new JFrame("Clicked"); 
    frame2.setVisible(true); 
    frame2.setSize(200,200); 
    JLabel label = new JLabel("you clicked me"); 
    JPanel panel = new JPanel(); 
    frame2.add(panel); 
    panel.add(label);  
    } 
} 
static class Action2 implements ActionListener {   
    public void actionPerformed (ActionEvent e) {  
    JFrame frame3 = new JFrame("OKNO 3"); 
    frame3.setVisible(true); 
    frame3.setSize(200,200); 

    JLabel label = new JLabel("kliknales"); 
    JPanel panel = new JPanel(); 
    frame3.add(panel); 
    panel.add(label); 
    } 
} 
} 
+4

* "yo no ahora cómo pero materno os necesito," * Tanto los correctores ortográficos y Shift son abundantes –

Respuesta

6

agregar sus ActionListener dos veces para button. Así corregir su código para button2 a

JButton button2 = new JButton("hello agin2"); 
    panel.add(button2); 
    button2.addActionListener (new Action2());//note the button2 here instead of button 

Además, lleve a cabo las operaciones de su swing en el correct thread utilizando EventQueue.invokeLater

+0

lo intento pero no puedo hacer esto; /. por favor, reparen mi código – Lukii007

+3

El código que publiqué fue copiado y pegado al suyo, y solo agregué un '2'. Deberías poder hacerlo tú mismo. Y la llamada 'invokeLater' se puede copiar casi directamente desde el enlace que proporcioné – Robin

+0

Acordé con @Robin justo después de que declaraste el button2 en la segunda línea, es button.add ... en lugar de button ** 2 **. – Adnan

Cuestiones relacionadas