如何在Java应用程序的底部创build一个条形,如状态栏?
我正在创build一个Java应用程序,并希望在应用程序的底部有一个栏,在其中显示一个文本栏和一个状态(进度)栏。
只有我似乎无法在NetBeans中find控件,我也不知道手动创build的代码。
使用BorderLayout创build一个JFrame或JPanel,给它一个像BevelBorder或行边界的东西,以便与其余内容分离,然后在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);
这是我的机器上面的状态条码的结果:
不幸的是,Swing没有StatusBars的本地支持。 你可以使用一个BorderLayout
和一个标签或任何你需要显示在底部:
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); } }
然后在您的主面板中:
statusBar = new StatusBar(); getContentPane().add(statusBar, java.awt.BorderLayout.SOUTH);
来自: http : //www.java-tips.org/java-se-tips/javax.swing/creating-a-status-bar.html
我使用了L2FProd的 swing库。 他们提供的状态栏库非常好。
以下是你将如何使用它:
- 下载他们提供的JAR并将其放入你的类path中
-
状态栏在内部将栏区域分为区域。 每个区域可以包含一个组件(JLabel,JButton等)。 想法是用所需的区域和组件填满栏。
-
实例化状态栏如下….
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%", "*"} );
-
现在将上面的
statusBar
添加到你有的主面板(BorderLayout并将其设置在南侧)。
从我在这里工作的应用程序中看到一个示例截图(它有2个区域)。 让我知道如果你面临任何问题….
我会推荐在SwingX库中的状态栏组件 – 这里是状态栏的API文档在这里
这是一个很好的例子。
玩的开心。