0
내 프레임에 탭을 만들고 싶지만 원하는대로 만들 수 있는지 모르겠습니다. 이 탭은 왼쪽에 있어야하며 탭 아래에는 각 탭마다 개별적으로 jpanel이어야합니다.이 유형의 jtabbedpane을 만들 수 있습니까?
내 프레임에 탭을 만들고 싶지만 원하는대로 만들 수 있는지 모르겠습니다. 이 탭은 왼쪽에 있어야하며 탭 아래에는 각 탭마다 개별적으로 jpanel이어야합니다.이 유형의 jtabbedpane을 만들 수 있습니까?
JTabbedPane에 정말 할 수 없습니다. TabbedPaneUI를 해킹하는 것이 가능하다고 생각하지만 신뢰할 수 있다고 생각하지는 않습니다.
대신 JToggleButtons를 GridLayout에 배치합니다. 그들은 탭과 똑같이 보이지 않을 것입니다. 그러나 그것들은 사용할 수있을 것입니다. 그리고 나는 사용자들이 어느쪽으로 든 신경을 쓰지 않을 것이라고 생각합니다.
탭 아래의 작은 "정보"영역과 기본 컨텐트 영역은 각각 CardLayout이어야합니다. 이렇게하면 각각의 콘텐츠가 가능한 모든 콘텐츠를 수용 할 수있을 정도로 커집니다.
String title1 = "Tab 1";
String title2 = "Tab 2";
Component infoPanel1 = new FileInfoPanel();
Component infoPanel2 = new OtherInfoPanel();
Component content1 = new WaveFormPanel();
Component content2 = new OtherPanel();
final CardLayout infoLayout = new CardLayout();
final JComponent infoArea = new JPanel(infoLayout);
infoArea.add(infoPanel1, "1");
infoArea.add(infoPanel2, "2");
final CardLayout contentAreaLayout = new CardLayout();
final JComponent contentArea = new JPanel(contentAreaLayout);
contentArea.add(content1, "1");
contentArea.add(content2, "2");
class TabSwitcher
implements ActionListener {
private String cardID;
TabSwitcher(String cardID) {
this.cardID = cardID;
}
@Override
public void actionPerformed(ActionEvent event) {
infoLayout.show(infoArea, cardID);
contentAreaLayout.show(contentArea, cardID);
}
}
JToggleButton tab1 = new JToggleButton("Tab 1");
tab1.setHorizontalAlignment(SwingConstants.LEADING);
tab1.addActionListener(new TabSwitcher("1"));
JToggleButton tab2 = new JToggleButton("Tab 2");
tab2.setHorizontalAlignment(SwingConstants.LEADING);
tab2.addActionListener(new TabSwitcher("2"));
ButtonGroup group = new ButtonGroup();
group.add(tab1);
group.add(tab2);
JComponent tabsPanel = new JPanel(new GridLayout(0, 1));
tabsPanel.setBorder(BorderFactory.createEmptyBorder(6, 0, 12, 0));
tabsPanel.add(tab1);
tabsPanel.add(tab2);
JComponent tabArea = new JPanel(new BorderLayout());
tabArea.add(tabsPanel, BorderLayout.PAGE_START);
tabArea.add(infoArea, BorderLayout.CENTER);
JComponent analyser = new JPanel(new BorderLayout());
analyser.add(tabArea, BorderLayout.LINE_START);
analyser.add(contentArea, BorderLayout.CENTER);
tab1.doClick();
frame.getContentPane().add(analyser);
frame.pack();
좋아, 알았다. 당신의 노력에 감사드립니다! jtogglebutton을 사용하면 좋은 생각입니다. –