JTextField ne s'affiche que comme une fente Utilisation de GridBagLayout, besoin d'aide
Salut je vous remercie d'avance pour toute aide, je suis en train de créer un programme simple pour apprendre GUI mais lorsque j'exécute le code ci-dessous mon JTextFields de tous les montrer comme une fente qui n'est pas assez grand pour un seul caractère.
cant poster une image mais il devrait ressembler à: Label [|
où [| est ce que le champ de texte ressemble en fait à
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class lab6start implements ActionListener
{
JTextField custNameTxt;
JTextField acctNumTxt;
JTextField dateCreatedTxt;
JButton checkingBtn;
JButton savingsBtn;
JTextField witAmountTxt;
JButton withDrawBtn;
JTextField depAmountTxt;
JButton depositBtn;
lab6start()
{
JFrame bankTeller = new JFrame("Welcome to Suchnsuch Bank");
bankTeller.setSize(500, 280);
bankTeller.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
bankTeller.setResizable(false);
bankTeller.setLayout(new GridBagLayout());
bankTeller.setBackground(Color.gray);
//bankTeller.getContentPane().add(everything, BorderLayout.CENTER);
GridBagConstraints c = new GridBagConstraints();
JPanel acctInfo = new JPanel(new GridBagLayout());
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 2;
c.gridheight = 1;
c.insets = new Insets(5,5,5,5);
bankTeller.add(acctInfo, c);
c.gridwidth = 1;
//labels
//name acct# balance interestRate dateCreated
JLabel custNameLbl = new JLabel("Name");
c.gridx = 0;
c.gridy = 0;
c.insets = new Insets(0,0,0,0);
acctInfo.add(custNameLbl, c);
custNameTxt = new JTextField("customer name",50);
c.gridx = 1;
c.gridy = 0;
c.insets = new Insets(5,5,5,5);
acctInfo.add(custNameTxt,c);
custNameTxt.requestFocusInWindow();
JLabel acctNumLbl = new JLabel("Account Number");
c.gridx = 0;
c.gridy = 1;
c.insets = new Insets(5,5,5,5);
acctInfo.add(acctNumLbl,c);
acctNumTxt = new JTextField("account number");
c.gridx = 1;
c.gridy = 1;
c.insets = new Insets(5,5,5,5);
acctInfo.add(acctNumTxt,c);
JLabel dateCreatedLbl = new JLabel("Date Created");
c.gridx = 0;
c.gridy = 2;
c.insets = new Insets(5,5,5,5);
acctInfo.add(dateCreatedLbl,c);
dateCreatedTxt = new JTextField("date created");
c.gridx = 1;
c.gridy = 2;
c.insets = new Insets(5,5,5,5);
acctInfo.add(dateCreatedTxt,c);
//buttons
checkingBtn = new JButton("Checking");
c.gridx = 0;
c.gridy = 3;
c.insets = new Insets(5,5,5,5);
acctInfo.add(checkingBtn,c);
savingsBtn = new JButton("Savings");
c.gridx = 1;
c.gridy = 3;
c.insets = new Insets(5,5,5,5);
acctInfo.add(savingsBtn,c);
//end of info panel
JPanel withDraw = new JPanel(new GridBagLayout());
c.gridx = 0;
c.gridy = 1;
c.insets = new Insets(5,5,5,5);
bankTeller.add(withDraw, c);
witAmountTxt = new JTextField("Amount to Withdraw:");
c.gridx = 0;
c.gridy = 0;
c.insets = new Insets(5,5,5,5);
withDraw.add(witAmountTxt,c);
withDrawBtn = new JButton("Withdraw");
c.gridx = 1;
c.gridy = 0;
c.insets = new Insets(5,5,5,5);
withDraw.add(withDrawBtn,c);
//add check balance
//end of withdraw panel
JPanel deposit = new JPanel(new GridBagLayout());
c.gridx = 1;
c.gridy = 1;
c.insets = new Insets(5,5,5,5);
bankTeller.add(deposit, c);
depAmountTxt = new JTextField("Amount to Deposit");
c.gridx = 0;
c.gridy = 0;
c.insets = new Insets(5,5,5,5);
deposit.add(depAmountTxt,c);
depositBtn = new JButton("Deposit");
c.gridx = 1;
c.gridy = 0;
c.insets = new Insets(5,5,5,5);
deposit.add(depositBtn,c);
bankTeller.setVisible(true);
//action/event
checkingBtn.addActionListener(this);
savingsBtn.addActionListener(this);
withDrawBtn.addActionListener(this);
depositBtn.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource()== checkingBtn)
{
witAmountTxt.requestFocusInWindow();
//checking newcheck = new checking();
}
}
}
/*
String accountType = null;
accountType = JOptionPane.showInputDialog(null, "Checking or Savings?");
if (accountType.equalsIgnoreCase("checking"))
{
checking c_Account = new checking();
}
else if (accountType.equalsIgnoreCase("savings"))
{
// savings s_Account = new savings();
}
else
{
JOptionPane.showMessageDialog(null, "Invalid Selection");
}
*/
source d'informationauteur Bill.Caffery | 2010-12-24
Vous devez vous connecter pour publier un commentaire.
Essayez d'appeler pack() sur votre JFrame après l'ajout de tout et avant setVisible(true)
Aussi, vous ne voudrez pas oublier de mettre le GridBagConstraints weightx et lourdes champs. Au moins leur donner une non-valeur 0 tel que 1.0 pour la plupart des champs et 0 pour les champs dont la taille vous ne voulez pas changé si l'interface graphique des changements de taille.
L'ajout de ceux qui fonctionne pour moi:
Il y a aussi un bug dans le Swing qui pourrait entraîner un JTextArea apparaît comme une fente, bien que Sun/Oracle dit "ce n'est pas un bug, c'est une fonctionnalité":
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4247013
Une solution potentielle que quelqu'un a dit sur ce thread est de définir la taille minimale de la component swing jtextfield... quelque chose comme ceci:
Je suis deviner à partir du nom de lab6 que vous n'avez pas utilisé le GridBagLayout avant. Il est l'un des plus difficiles et les plus craints de la Balançoire outils de Mise en page. Si vous ne l'avez pas utilisé, je vous suggère de travailler par le biais de tutoriels tels que:
http://download.oracle.com/javase/tutorial/uiswing/layout/gridbag.html
et la construction jusqu'à votre exemple