JLabel
の上に s を表示して、上にJProgressBar
派手な書式設定のテキストを表示できるようにしようとしていJProgressBar
ます。
拡張する私のコンポーネントのコンストラクターは次のJPanel
とおりです。
public InfoDisplay() {
//setLayout(new GridLayout(0, 1));
setLayout(new OverlayLayout(this));
lblPlayer = new JLabel();
lblPlayer.setName("Owner");
lblUnit = new JLabel();
lblUnit.setName("Unit");
lblCoords = new JLabel();
lblCoords.setName("Coordinates");
lblResources = new JLabel();
lblResources.setName("Resouces");
prgProgress = new JProgressBar();
prgProgress.setMaximum(4);
prgProgress.setStringPainted(true);
fmtDefault = "<html><font color='gray'>%s:</font> %s</html>";
JPanel pnlInfo = new JPanel();
pnlInfo.setLayout(new FlowLayout(FlowLayout.LEADING));
pnlInfo.setOpaque(false);
pnlInfo.add(lblPlayer);
pnlInfo.add(lblUnit);
pnlInfo.add(lblCoords);
pnlInfo.add(lblResources);
add(pnlInfo);
add(prgProgress);
displayInfo(Collections.EMPTY_LIST);
setProgress("Upkeep", 2);
}
OverlayLayout
フォームの作成時にこの目標を達成するを使用してみました。ただし、JProgressBar
更新すると、テキストフィールドを保持する他のパネルが覆われます。
も使用してみましたJLayeredPane
が、それを機能させるにはカスタムレイアウトマネージャーを作成する必要があり、そのような単純なことのためにすべてのサイズ変更コードを手動で実行することを避けたいと考えていました.
誰かが他の解決策やアイデアを持っていますか?