0
こんにちは友人私はSwingとawtを使用してデスクトップアプリケーションを作成しています。私はTab(アクティビティ、パーク、フィルタトレイル、MyPark)を作成するためにJTabbedPaneを使用していますが、それは左に揃えています。私はいくつかのカスタムUL(ルックアンドフィール)を使用していましたが、ここでは何の解決策も考えられませんでした。私のコードです。画面中央のJTabbedPaneでタブを作成する方法
private void initTabbedPane() {
UIManager.put("TabbedPane.selected", Color.BLUE);
tabbedPane = new JTabbedPane(){
public Color getForegroundAt(int index){
if(getSelectedIndex() == index) return Color.white;
return Color.BLACK;
}
};
tabbedPane.setUI(new CustomTabUI());
tabbedPane.setBackground(Color.WHITE);
tabbedPane.setTabPlacement(JTabbedPane.TOP);
tabbedPane.addTab(getOutdoors.getActivities().getName(),
new ActivityTab(getOutdoors.getActivities()));
tabbedPane.addTab(getOutdoors.getParks().getName(), new ParkTab(getOutdoors.getParks()));
tabbedPane.addTab("Filter Trails", new FilterTab(getOutdoors.getActivities(),
getOutdoors.getTrailLists(), getOutdoors.getNumTrailLists()));
for (int i = 0; i < getOutdoors.getNumTrailLists(); i++) {
TrailList t = getOutdoors.getTrailList(i);
if(t != null)
tabbedPane.addTab(t.getParkName(), new TrailListTab(t, getOutdoors.getActivities()));
}
tabbedPane.setSelectedIndex(0);
if (openFile) {
getContentPane().removeAll();
openFile = false;
}
tabbedPane.setTabPlacement(JTabbedPane.TOP);
tabbedPane.setTabLayoutPolicy(JTabbedPane.WRAP_TAB_LAYOUT);
getContentPane().add(tabbedPane, BorderLayout.CENTER);
getContentPane().validate();
}
カスタムUIクラス: -
public class CustomTabUI extends BasicTabbedPaneUI {
private final Insets borderInsets = new Insets(0, 0, 10, 0);
@Override
protected void paintContentBorder(Graphics g, int tabPlacement, int selectedIndex) {
}
@Override
protected Insets getContentBorderInsets(int tabPlacement) {
return borderInsets;
}
}
各LAFには、タブ付きペインのレイアウトがあります。 Windowsでは左揃えが正常です。 MACで私はセンターが正常だと信じています。コンポーネントの動作を強制しないでください。別の解決方法は、FlowLayoutでJPanelを使用し、各タブにボタンを追加することです。次に、それぞれのパネルにCardLayoutを使用することができます。ボタンをクリックすると、適切なパネルが表示されます。詳細および使用例については、[CardLayoutの使用方法](https://docs.oracle.com/javase/tutorial/uiswing/layout/card.html)のSwingチュートリアルのセクションを参照してください。 – camickr