Je suis en train de créer une application Java et j'aimerais avoir une barre en bas de l'application, dans laquelle j'affiche une barre de texte et une barre d'état (progression).
Seulement, je n'arrive pas à trouver le contrôle dans NetBeans et je ne connais pas non plus le code à créer manuellement.
Créez un JFrame ou JPanel avec un BorderLayout, donnez-lui quelque chose comme un BevelBorder ou une bordure de ligne afin qu'il soit séparé du reste du contenu, puis ajoutez le panneau d'état à BorderLayout.SOUTH.
JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
frame.setSize(200, 200);
// create the status bar panel and shove it down the bottom of the frame
JPanel statusPanel = new JPanel();
statusPanel.setBorder(new BevelBorder(BevelBorder.LOWERED));
frame.add(statusPanel, BorderLayout.SOUTH);
statusPanel.setPreferredSize(new Dimension(frame.getWidth(), 16));
statusPanel.setLayout(new BoxLayout(statusPanel, BoxLayout.X_AXIS));
JLabel statusLabel = new JLabel("status");
statusLabel.setHorizontalAlignment(SwingConstants.LEFT);
statusPanel.add(statusLabel);
frame.setVisible(true);
Voici le résultat du code à barres d'état ci-dessus sur ma machine:
Malheureusement, Swing n'a pas de support natif pour StatusBars. Vous pouvez utiliser un BorderLayout
et une étiquette ou tout ce que vous devez afficher en bas:
public class StatusBar extends JLabel {
/** Creates a new instance of StatusBar */
public StatusBar() {
super();
super.setPreferredSize(new Dimension(100, 16));
setMessage("Ready");
}
public void setMessage(String message) {
setText(" "+message);
}
}
Puis dans votre panneau principal:
statusBar = new StatusBar();
getContentPane().add(statusBar, Java.awt.BorderLayout.SOUTH);
De: http://www.Java-tips.org/Java-se-tips/javax.swing/creating-a-status-bar.html
J'ai utilisé la bibliothèque swing de L2FProd . La bibliothèque de barres d'état qu'ils ont fournie est très bonne.
Voici comment vous l'utiliseriez:
La barre d'état divise en interne la zone de la barre en zone. Chaque zone peut contenir un composant (JLabel, JButton, etc.). L'idée est de remplir la barre avec les zones requises et les composants.
Instanciez la barre d'état comme ci-dessous ....
import Java.awt.Component;
import javax.swing.BorderFactory;
import javax.swing.JLabel;
import com.l2fprod.common.swing.StatusBar;
StatusBar statusBar = new StatusBar();
statusBar.setZoneBorder(BorderFactory.createLineBorder(Color.GRAY));
statusBar.setZones(
new String[] { "first_zone", "second_zone", "remaining_zones" },
new Component[] {
new JLabel("first"),
new JLabel("second"),
new JLabel("remaining")
},
new String[] {"25%", "25%", "*"}
);
Ajoutez maintenant le statusBar
ci-dessus au panneau principal que vous avez (BorderLayout et réglez-le sur le côté sud).
Voir un exemple de capture d'écran d'une des applications sur lesquelles je travaille ici (il a 2 zones). Faites-moi savoir si vous rencontrez des problèmes ...
Je recommanderais le composant de la barre d'état dans la bibliothèque SwingX - Voici le document API pour la la barre d'état est ici
n bon exemple de son utilisation est ici.
S'amuser.
Pour un look plus moderne que la réponse acceptée, optez pour un GridBagLayout et un JSeparator:
JPanel outerPanel = new JPanel(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.anchor = GridBagConstraints.PAGE_START;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weightx = 1;
gbc.weighty = 0;
JPanel menuJPanel = new JPanel();
menuJPanel.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, Color.RED));
outerPanel.add(menuJPanel, gbc);
gbc.insets = new Insets(5, 5, 5, 5);
gbc.fill = GridBagConstraints.BOTH;
gbc.weighty = 1;
JPanel contentJPanel = new JPanel();
contentJPanel.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, Color.BLUE));
outerPanel.add(contentJPanel, gbc);
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.weighty = 0;
gbc.insets = new Insets(0, 0, 0, 0);
outerPanel.add(new JSeparator(JSeparator.HORIZONTAL), gbc);
outerPanel.add(new JPanel(), gbc);