Comment obtenir le jtextfield code> pour avoir une hauteur fixe lorsque le cadre est maximisé? Je veux qu'il s'agisse d'une sorte de similaire à l'application Skype sur Ubuntu.
private JTextField username;
private JPasswordField password;
private JLabel usernamelabel;
private JLabel passwordlabel;
public LoginPanel(){
setSize(200,200);
setLayout(new GridLayout(4,4));
setBackground(new Color(85,153,187));
setBorder(BorderFactory.createEmptyBorder(70, 70, 70, 70));
username = new JTextField();
password = new JPasswordField();
usernamelabel= new JLabel("Username");
passwordlabel= new JLabel("Password");
username.setBounds(5, 5, 100, 100);
username.setPreferredSize(new Dimension(80,20));
password.setPreferredSize(new Dimension(80,20));
add(usernamelabel);
add(username);
add(passwordlabel);
add(password);
5 Réponses :
N'utilisez pas une mise en page autre que gridlayout cod> ou mettre le champ de texte dans un autre panneau contenant un
flowlayout code> qui se trouve à l'intérieur de votre
gridlayout code >. P>
Donc, votre disant Créer des JPANels qui ont un flowLayout et ajoutez-leur les champs de texte, puis ajoutez-les au panneau contenant la disposition de la grille? Je peux voir comment cela fonctionnerait mais n'y a-t-il pas une façon de faire cela? Je suis totalement contre les genrateurs d'interface graphique NetBeans. :)
Oui, la superposition de différentes mises en page est un moyen facile et courant de générer des effets de mise en page souhaités.
+1 pour les mises en page imbriquées. En tant que commodité, jPanel code> par défaut sur
flowlayout code>.
-1 Pour les mises en page imbriquées ;-) Ce n'est que le piratage d'urgence si la 3ème partie layoutManagers n'est pas une option. S'ils sont, font des recherches et choisissez celui qui convient le mieux, atterrissant probablement à l'un des «Big Trois» (Formlayout, Miglayout, DesignLayout): ils sont tous puissants et faciles à manipuler.
Vous pouvez vous référer à ici . P>
Le SETMAXIZe La méthode peut être trouvée dans JCOMPONENT et le JTextField permet d'utiliser cette méthode de JComponent. P>
éditer em>: Cependant, il semble que ce n'est pas une bonne pratique au code de la taille du JTextField, en particulier lorsque vous l'exécutez sur plusieurs plates-formes, car vous pourriez rencontrer des problèmes avec la taille de la police. p>
Dans une application professionnelle Java GUI, JAMAIS I> Définissez explicitement la taille préférée - vous vous en prenez une hypothèse que la taille de la police du composant toujours i> ajustée dans 20 pixels de hauteur. Si l'utilisateur dispose de grandes polices définies sur leur bureau, cela ne sera pas vrai. Utilisez un gestionnaire de présentation qui honore la taille préférée du jtextfield - qui par défaut à la bonne hauteur du bureau L'application est activée. La codage rigide est garantie de toucher une partie de l'heure (Mac OS, en particulier, a des hauteurs de police par défaut plus grandes que Windows). Ce genre de chose est l'une des raisons existant des responsables de la mise en page.
Oh. Je ne savais pas à ce sujet. Semble être un point valide. Va éditer mon post.
Merci pour toutes les gars de l'aide, espérons que cela aide les autres à l'avenir. J'ai eu le look visuel que je cherchais.
Dans une pincée, faire
tf.setMaximumSize(tf.getMinimumSize())
C'est correct, donc si le licageManager respecte ces astuces, cela fonctionnera, sinon, ce n'est pas le cas. Fonctionne pour les dispositions d'écoulement et de boîte et maintient la taille constante du champ, la hauteur et la largeur.
Pas tout à fait correct non plus: a) max n'a aucun effet sur le flux B) VRAI: la boîte respecte Max - mais la plupart probablement (non probablement essayé, cependant ;-) sera confus si min
Je pense que cela résout votre problème.
import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.GridLayout; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; public class Main { /** * @param args */ public static void main(String[] args) { JFrame failFrame = new JFrame(); JPanel mainPanel = new JPanel(); mainPanel.setLayout(new GridLayout(0, 4)); JPanel leftTextFieldPanel = new JPanel(); leftTextFieldPanel.setLayout(new FlowLayout()); JPanel rightTextFieldPanel = new JPanel(); rightTextFieldPanel.setLayout(new FlowLayout()); JTextField leftTextField = new JTextField(); leftTextField.setPreferredSize(new Dimension(150,20)); JTextField rightTextField = new JTextField(); rightTextField.setPreferredSize(new Dimension(150,20)); leftTextFieldPanel.add(leftTextField); mainPanel.add(leftTextFieldPanel); rightTextFieldPanel.add(rightTextField); mainPanel.add(rightTextFieldPanel); mainPanel.add(new JPanel()); mainPanel.add(rightTextFieldPanel); mainPanel.add(new JPanel()); failFrame.add(mainPanel); failFrame.setSize(600, 400); failFrame.setLocationRelativeTo(null); failFrame.setVisible(true); } }
Désolé gars, je veux dire jtextfield et jPasswordfield pour une hauteur fixe.
SetMinimum / maximum / préféré / Taille Code>?