À propos de java GUI et claire JFrame pour afficher le nouveau contenu?
Je suis en train d'apprendre Java et de l'interface graphique. J'ai quelques questions, et la première est que, s'il y a aucune différence majeure entre la création d'une sous-classe de JFrame et une instance de JFrame. Il semble que comme une sous-classe est le plus puissant? Je me demande aussi si c'est nécessaire pour utiliser ce code lors de la création d'une interface graphique:
Container contentPane = getContentPane();
contentPane.setLayot(new Flowlayout());
- Je ajouter mon GUI de classe, c'est un test simple jusqu'à présent, à une tâche que j'ai à la main. Lorsqu'un utilisateur a entré du texte dans le champ de texte et appuyez sur le bouton pour continuer à l'étape suivante, comment je fais pour effacer l'image et afficher un nouveau contenu ou est-il une façon particulière de le faire est en Java? Je suppose qu'il doit y avoir mieux utiliser la même fenêtre au lieu de créer une nouvelle!? Id de l'aide preciated! Grâce
//Gui class
import java.awt.FlowLayout; //layout
import java.awt.event.ActionListener; //listener
import java.awt.event.ActionEvent; //event
import javax.swing.JFrame; //windows properties
import javax.swing.JLabel; //row of text
import javax.swing.JTextField; //enter text
import javax.swing.JOptionPane; //pop up dialog
import javax.swing.JButton; //buttons
//import.javax.swing.*;
public class Gui extends JFrame {
private JLabel text1;
private JTextField textInput1;
private JTextField textInput2;
private JButton nextButton;
//constructor creates the window and it's components
public Gui() {
super("Bank"); //title
setLayout(new FlowLayout()); //set default layout
text1 = new JLabel("New customer");
add(text1);
textInput1 = new JTextField(10);
add(textInput1);
nextButton = new JButton("Continue");
add(nextButton);
//create object to handle the components (action listener object)
frameHandler handler = new frameHandler();
textInput1.addActionListener(handler);
nextButton.addActionListener(handler);
}
//handle the events (class inside another class inherits contents from class outside)
private class frameHandler implements ActionListener {
public void actionPerformed(ActionEvent event){
String input1 = "";
//check if someone hits enter at first textfield
if(event.getSource() == textInput1){
input1 = String.format(event.getActionCommand());
JOptionPane.showMessageDialog(null, input1);
}
else if(event.getSource() == nextButton){
//??
}
}
}
}
OriginalL'auteur 3D-kreativ | 2012-01-05
Vous devez vous connecter pour publier un commentaire.
Ce petit code peut vous aider à expliquer les choses :
Non il n'y a pas de limite en fait. Mais mieux vous informer des différentes Mises en page proposées par java.package awt. Que pouvez vous aider d'une certaine façon. Étant donné que chaque composant a une mise en page par défaut de l'installation, comme JFrame a BorderLayout et Composite a FlowLayout. Ce qui concerne
Je ne sais pas quand ils ont déménagé loin de ContentPane contentPane = frame.getContentPane(); mais la réponse ci-dessus fixe les données en double affiche sur mon Jframe sur la deuxième charge
OriginalL'auteur nIcE cOw
si vous voulez passer (ajouter puis supprimer) JComponents, alors vous avez à
1) ajouter/supprimer des JComponents et ensuite appeler
2) la meilleure et la plus simple choix serait implémente CardLayout
CardLayout
, ce qui est mieux, puis constamment en ajoutant/enlevant des trucsOriginalL'auteur mKorbel
Si votre exigence est de faire un assistant, un panneau avec des boutons suivant et précédent, et en cliquant sur suivant/précédent bouton montrant certains composants. Vous pouvez essayer d'utiliser CardLayout.
Le CardLayout gère deux composants ou plus (généralement un Composite instances) qui partagent le même espace d'affichage. CardLayout permettre à l'utilisateur de choisir entre les composants.
Comment Utiliser CardLayout
OriginalL'auteur rahool
Si votre classe extends JFrame, vous pouvez le faire:
OriginalL'auteur LoneDuck