Java Ouvrir une nouvelle fenêtre en cliquant sur un bouton
Été assis à mon ordinateur pendant environ 13 heures et je pense que mes yeux sont les saignements.
J'ai trouvé un petit éditeur de gui j'aime appelé GuiGenie.
Il fonctionne parfaitement pour la création de la fenêtre avec les boutons et toutes ces bonnes choses.
Le problème c'est que je veux cliquer sur un bouton dans mon premier menu et ouvrir mon autre menu que j'ai fait.
Je viens de commencer la programmation il y a 4 semaines, donc je suis un noob complet.
J'ai un sentiment de sa gâcher à cause des principales méthodes mais je n'ai aucune idée et 13 heures de train d'essayer des millions de choses me rend fou : )
voici ce que j'ai obtenu jusqu'à présent
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class MyPanel extends JPanel {
private JTextField How;
private JLabel jcomp2;
private JLabel jcomp3;
private JButton jcomp4;
public MyPanel() {
//construct components
How = new JTextField (1);
jcomp2 = new JLabel ("How long were you parked?");
jcomp3 = new JLabel ("Minutes");
jcomp4 = new JButton ("openNewWindow");
//adjust size and set layout
setPreferredSize (new Dimension (315, 85));
setLayout (null);
//add components
add (How);
add (jcomp2);
add (jcomp3);
add (jcomp4);
//set component bounds (only needed by Absolute Positioning)
How.setBounds (245, 50, 60, 25);
jcomp2.setBounds (35, 30, 185, 50);
jcomp3.setBounds (250, 30, 60, 20);
jcomp4.setBounds (0, 0, 315, 25);
jcomp4.addActionListener( new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
}
});
}
public static void main (String[] args) {
JFrame frame = new JFrame ("MyPanel");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add (new MyPanel());
frame.pack();
frame.setVisible (true);
}
}
Quand le bouton est pressé, je le veux ouvrir cette nouvelle fenêtre
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class MyPanel2 extends JPanel {
private JButton jcomp1;
private JButton jcomp2;
private JButton jcomp3;
private JTextField jcomp4;
public MyPanel2() {
//construct components
jcomp1 = new JButton ("test1");
jcomp2 = new JButton ("test2");
jcomp3 = new JButton ("test3");
jcomp4 = new JTextField (5);
//adjust size and set layout
setPreferredSize (new Dimension (395, 156));
setLayout (null);
//add components
add (jcomp1);
add (jcomp2);
add (jcomp3);
add (jcomp4);
//set component bounds (only needed by Absolute Positioning)
jcomp1.setBounds (20, 45, 100, 25);
jcomp2.setBounds (135, 60, 100, 25);
jcomp3.setBounds (260, 35, 100, 25);
jcomp4.setBounds (105, 115, 100, 25);
}
public static void main (String[] args) {
JFrame frame = new JFrame ("MyPanel");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add (new MyPanel2());
frame.pack();
frame.setVisible (true);
}
}
Si quelqu'un pouvait aider, j'apprécierais beaucoup!!
J'ai beaucoup de respect pour vous, pros, parce que si vous êtes un pro à présent, vous êtes probablement plus intelligent que 99.9% de la production mondiale.
Ça me fait mal au cerveau.
- Arrêter d'essayer diverses choses, prendre une pause, de dormir une bonne nuit, et ensuite de lire le Swing tutoriel: docs.oracle.com/javase/tutorial/uiswing. Comprendre qu'un Composite doit être enfermé dans un JFrame de JDialog être affichées dans une nouvelle fenêtre, et que vous ne devrait avoir qu'une méthode main dans une application. Vous n'avez pas besoin de deux.
Vous devez vous connecter pour publier un commentaire.
Ici est quelque chose que vous pouvez faire, pour cette situation, où vous avez plusieurs
Forms or Windows
ce que vous pouvez faire est d'utiliser unJPanel
qui peut avoir cette CardLayout définir comme c'estLayoutManager
et vous pouvez ensuite ajouter les deuxJPanel
s et d'y accéder avec les méthodes fournies par le même.Ne pas utiliser
setBounds()
lors de l'utilisation deAbsolute Positioning
ce n'est vraiment pas la bonne façon de mettre les composants du conteneur parent. Au lieu d'utiliser setLocation(...) et setSize(...) méthodes. Envisager de ne pas utiliser le Positionnement Absolu autant que possible pour vous. Certaines lignes en faveur de l'avant de la ligne prises à partir de Java Docs sont comme suit :Depuis la sortie de votre programme est vraiment pas une expérience apaisante dans tous les sens. Atleast LayoutManager, peut rendre le travail beaucoup plus facile pour vous, car vous n'avez pas besoin de spécifier la position et la taille de chaque composant. Essayez de marcher à travers la La Disposition Des Gestionnaires Des Tutoriels, et de s'habituer à eux dès que possible. Ils sont la vraie vie des épargnants 🙂
Voici un code modifié pris à partir de votre
SOURCE CODE
null
mise en page. 🙂Voici le code pour myPanel classe, utilisez celui-ci: