안녕하세요, Google 크롬과 같은 탭 패널을 만들어야합니다. 다른 탭을 누르면 크롬이 탭을 넣습니다. 나는 이것을 가지고있다. 나는 기호 "+"로 탭을 누르면 jtabbedPane의 탭을 Google 크롬처럼 추가하십시오.
하지만, 이것은 효과 :
내가 새 탭의 위치를 기호 "+"로 위치를 교환 생각,하지만 난 할 수 그럴 수 없어. 나는 문제가있다. 정말로 나는 그 효과가있는 네비게이터 크롬처럼하고 싶다. 감사.
public class Main {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
VentanaPrincipalFrame ventana = new VentanaPrincipalFrame();
ventana.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
주요 프레임 : 여기에 내가 코드를
public class VentanaPrincipalFrame extends JFrame {
private JTabbedPane tabbedPane;
private JPanel panelAdd;
public VentanaPrincipalFrame() {
initFrame();
panelAdd = new JPanel();
tabbedPane = new JTabbedPane(JTabbedPane.TOP);
tabbedPane.addChangeListener(new ChangeListener() {
int i = 1;
@Override
public void stateChanged(ChangeEvent e) {
JTabbedPane tab = (JTabbedPane) e.getSource();
if(tab.getSelectedIndex() == tabbedPane.getTabCount()-1 && tabbedPane.getTabCount() > 1){
i++;
addPestana("Tab"+i);
//mensaje("Hola soy el ultimo");
}
}
});
getContentPane().add(tabbedPane, BorderLayout.CENTER);
tabbedPane.addTab("New tab", new PanelDinamicoPanel());
tabbedPane.addTab("+", panelAdd);
}
public void addPestana(String titulo){
tabbedPane.addTab(titulo , new PanelDinamicoPanel());
}
private void initFrame() {
setTitle("Principal");
setSize(400,400);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
}
}
내 사용자 지정 탭 : 모두에게
public class PanelDinamicoPanel extends JPanel{
private JTextField textField;
public PanelDinamicoPanel() {
setLayout(new BorderLayout(0, 0));
JPanel botonesPanel = new JPanel();
FlowLayout flowLayout_1 = (FlowLayout) botonesPanel.getLayout();
flowLayout_1.setAlignment(FlowLayout.RIGHT);
add(botonesPanel, BorderLayout.SOUTH);
JPanel panel = new JPanel();
FlowLayout flowLayout = (FlowLayout) panel.getLayout();
flowLayout.setAlignment(FlowLayout.RIGHT);
botonesPanel.add(panel);
JButton btnNewButton = new JButton("New button");
panel.add(btnNewButton);
JButton btnNewButton_1 = new JButton("New button");
panel.add(btnNewButton_1);
JPanel panel_1 = new JPanel();
add(panel_1, BorderLayout.CENTER);
GridBagLayout gbl_panel_1 = new GridBagLayout();
gbl_panel_1.columnWidths = new int[]{0, 0, 0};
gbl_panel_1.rowHeights = new int[]{0, 0};
gbl_panel_1.columnWeights = new double[]{0.0, 1.0, Double.MIN_VALUE};
gbl_panel_1.rowWeights = new double[]{0.0, Double.MIN_VALUE};
panel_1.setLayout(gbl_panel_1);
JLabel lblNombre = new JLabel("Name");
GridBagConstraints gbc_lblNombre = new GridBagConstraints();
gbc_lblNombre.insets = new Insets(0, 0, 0, 5);
gbc_lblNombre.anchor = GridBagConstraints.EAST;
gbc_lblNombre.gridx = 0;
gbc_lblNombre.gridy = 0;
panel_1.add(lblNombre, gbc_lblNombre);
textField = new JTextField();
GridBagConstraints gbc_textField = new GridBagConstraints();
gbc_textField.fill = GridBagConstraints.HORIZONTAL;
gbc_textField.gridx = 1;
gbc_textField.gridy = 0;
panel_1.add(textField, gbc_textField);
textField.setColumns(10);
}
}
감사합니다.
탭 모델, 즉 선택된 탭의 상태 변경으로 인해 change 이벤트가 트리거되므로 stateChanged 메서드가 호출 될 때 선택한 탭이 이제 "+"탭이됩니다 ... – MadProgrammer
도움을 더 빨리, [SSCCE] (http://sscce.org/)에 게시하십시오. –