Comment organiser plusieurs panneaux dans JFrame
Je suis en train de faire une simple calculatrice de la pratique Graphique (je suis un complet GUI noob). Je vais avoir quelques problèmes avec le fait d'avoir inutiles les espaces après les Polyashenkos Calulator et de la zone de texte et l'espace entre la zone de texte et les boutons. Aussi comment faire en sorte que la mise en page, mais d'éliminer l'espace et font également de la partie inférieure 3 boutons plus petits. Des conseils sur ce que im faire ou comment je peux faire mieux serait très apprécié. Merci.
import javax.swing.*;
import java.awt.*;
public class calculator {
public static void main(String[] args) {
//creates the JFrame(a window with decorations)
JFrame frame = new JFrame("Calculator");
//stops the program when window is closed
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(377, 350);
//the main panel of the JFrame,
//remembet you cant add content directly to JFrame
JPanel content = new JPanel(new GridLayout(4, 0));
//panel for the text field
JPanel textarea = new JPanel(new GridLayout(4, 0));
//panel for the buttons,
//GridLayout(int rows, int cols, int horiz_gap, int vert_gap)
JPanel buttonarea = new JPanel(new GridLayout(4, 5, 2, 2));
// the panel for the bigger bottom buttons
JPanel secondbuttonarea = new JPanel(new GridLayout(1, 1, 2, 2));
//the panel for the text on top
JPanel label = new JPanel();
content.add(label);
content.add(textarea);
content.add(buttonarea);
content.add(secondbuttonarea);
JLabel words = new JLabel("Polyashenko's Calculator", JLabel.CENTER);
label.add(words);
JTextField enterhere = new JTextField("0.", JTextField.CENTER);
//will set the curser of the text bar on right side
enterhere.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
textarea.add(enterhere);
//makes a button called b1 with text in it
JButton b1 = new JButton("BkSP");
//adds the backspace button to the buttonarea panel
buttonarea.add(b1);
JButton b2 = new JButton("CE");
buttonarea.add(b2);
JButton b3 = new JButton("C");
buttonarea.add(b3);
JButton b4 = new JButton("/");
buttonarea.add(b4);
JButton b5 = new JButton("sqrt");
buttonarea.add(b5);
JButton b6 = new JButton("7");
buttonarea.add(b6);
JButton b7 = new JButton("8");
buttonarea.add(b7);
JButton b8 = new JButton("9");
buttonarea.add(b8);
JButton b9 = new JButton("*");
buttonarea.add(b9);
JButton b10 = new JButton("%");
buttonarea.add(b10);
JButton b11 = new JButton("4");
buttonarea.add(b11);
JButton b12 = new JButton("5");
buttonarea.add(b12);
JButton b13 = new JButton("6");
buttonarea.add(b13);
JButton b14 = new JButton("-");
buttonarea.add(b14);
JButton b15 = new JButton("1/x");
buttonarea.add(b15);
JButton b16 = new JButton("1");
buttonarea.add(b16);
JButton b17 = new JButton("2");
buttonarea.add(b17);
JButton b18 = new JButton("3");
buttonarea.add(b18);
JButton b19 = new JButton("+");
buttonarea.add(b19);
JButton b20 = new JButton("+/-");
buttonarea.add(b20);
JButton b21 = new JButton("0");
secondbuttonarea.add(b21);
JButton b22 = new JButton(".");
secondbuttonarea.add(b22);
JButton b23 = new JButton("=");
secondbuttonarea.add(b23);
//adds the buttonarea panel to the main panel
frame.getContentPane().add(content);
//makes the window visible, put at end of program
frame.setVisible(true);
}
}
Pour une référence future: Netbeans et MyEclipse les deux ont une pratique Swing interface graphique de l'éditeur WYSIWYG qui permet de faire cela facilement. Vous avez vraiment besoin pour commencer comme il ne prendra pas un programme existant et de l'aide.
veuillez ignorer ci-dessus la photo de l'obscurité, de mauvaises suggestions, vos façons de faire est bon, vous n'êtes pas prisonier de GUI_Builders
recherchez ici Java + Balançoire + Calculatrice
veuillez ignorer ci-dessus la photo de l'obscurité, de mauvaises suggestions, vos façons de faire est bon, vous n'êtes pas prisonier de GUI_Builders
recherchez ici Java + Balançoire + Calculatrice
OriginalL'auteur konopoly | 2013-04-17
Vous devez vous connecter pour publier un commentaire.
l'une des leçons par Aéroglisseur Plein D'Anguilles (-: forums.sun.com 🙂
OriginalL'auteur mKorbel
Un
GridLayout
n'est pas non plus l'air très bien dans ce type de cas.Le contenu remplit la case de la grille. Vous avez seulement un contrôle minimal sur l'espacement entre les lignes et de colonnes.
Vous pouvez avoir à modifier les mises en page pour le faire paraître comme vous le souhaitez.
GridBagLayout
dispose de tous les éléments de contrôle, mais est beaucoup plus difficile à configurer.Parfois, vous pouvez imbriquer des panneaux avec
BorderLayout
etGridLayout
pour le faire paraître raisonnable. Mais il est Swing et cela signifie qu'elle est utilisable, mais il devient très difficile de donner un aspect lisse.J'aime toujours utiliser un
FlowLayout
pour les boutons OK/Annuler. Ils regardent le mieux à moi de cette façon et vous pouvez les pousser tous à gauche, à droite ou centré. Votre calculatrice boutons devrait bien fonctionner avec unGridLayout
mais vous ne pouvez pas facilement avoir un haut le bouton "Entrer" ou un "0".Par exemple, essayez d'utiliser une verticale
BoxLayout
au lieu d'une grille de 4 de haut sur 1 de large.OriginalL'auteur Lee Meador