Javaアプリを作成中です。アプリの下部にテキストバーとステータス(進行状況)バーを表示するバーが必要です。
NetBeansでコントロールを見つけることができないのは私だけで、手動で作成するコードもわかりません。
BorderLayoutを使用して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);
From: http://www.Java-tips.org/Java-se-tips/javax.swing/creating-a-status-bar.html
L2FProd のswingライブラリを使用しました。彼らが提供したステータスバーライブラリは非常に優れています。
以下に使用方法を示します。
ステータスバーは、バー領域をゾーンに内部的に分割します。各ゾーンにはコンポーネント(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を南側に設定します)。
作業中のアプリの1つからのサンプルスクリーンショットを参照してください here (2つのゾーンがあります)。問題が発生した場合はお知らせください。
受け入れられている答えよりも現代的な外観を得るには、GridBagLayoutと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);