wah, setelah cari sana-sini, search gunakan google. untuk mencari gimana caranya membuat Tabbed Pane dialog seperti yang ada di NetBeans 6.8, akhirnya dapat juga. Eh malahan adanya di Tutorial Netbeans ![]()
Ok gini nih Tabbed Pane ala Netbeans (abis gak tau istilahnya)

Hahahaha. pake tombol x untuk close kan tab. keren kan. Saya juga sering menggunakan tampilan seperti ini saat membangun project MDI (JFrame dilengkapi dengan Desktop Pane, dan didalam JFrame terdapat beberapa JInternalFrame).
Ok gini caranya
1. Buat Project Baru (tentunya Netbeans)
2. Buat 1 (Satu) java class dengan nama ButtonTabComponent
3. Copy + Paste kan coding dibawah
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.AbstractButton;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.plaf.basic.BasicButtonUI;
public class ButtonTabComponent extends JPanel {
private final JTabbedPane pane;
public ButtonTabComponent(final JTabbedPane pane) {
//unset default FlowLayout’ gaps
super(new FlowLayout(FlowLayout.LEFT, 0, 0));
if (pane == null) {
throw new NullPointerException("TabbedPane is null");
}
this.pane = pane;
setOpaque(false);
//make JLabel read titles from JTabbedPane
JLabel label = new JLabel() {
public String getText() {
int i = pane.indexOfTabComponent(ButtonTabComponent.this);
if (i != -1) {
return pane.getTitleAt(i);
}
return null;
}
};
add(label);
//add more space between the label and the button
label.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5));
//tab button
JButton button = new TabButton();
add(button);
//add more space to the top of the component
setBorder(BorderFactory.createEmptyBorder(2, 0, 0, 0));
}
private class TabButton extends JButton implements ActionListener {
public TabButton() {
int size = 17;
setPreferredSize(new Dimension(size, size));
setToolTipText("close this tab");
//Make the button looks the same for all Laf’s
setUI(new BasicButtonUI());
//Make it transparent
setContentAreaFilled(false);
//No need to be focusable
setFocusable(false);
setBorder(BorderFactory.createEtchedBorder());
setBorderPainted(false);
//Making nice rollover effect
//we use the same listener for all buttons
addMouseListener(buttonMouseListener);
setRolloverEnabled(true);
//Close the proper tab by clicking the button
addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
int i = pane.indexOfTabComponent(ButtonTabComponent.this);
if (i != -1) {
pane.remove(i);
}
}
//we don’t want to update UI for this button
public void updateUI() {
}
//paint the cross
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g.create();
//shift the image for pressed buttons
if (getModel().isPressed()) {
g2.translate(1, 1);
}
g2.setStroke(new BasicStroke(2));
g2.setColor(Color.BLACK);
if (getModel().isRollover()) {
g2.setColor(Color.MAGENTA);
}
int delta = 6;
g2.drawLine(delta, delta, getWidth() - delta - 1, getHeight() - delta - 1);
g2.drawLine(getWidth() - delta - 1, delta, delta, getHeight() - delta - 1);
g2.dispose();
}
}
private final static MouseListener buttonMouseListener = new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
Component component = e.getComponent();
if (component instanceof AbstractButton) {
AbstractButton button = (AbstractButton) component;
button.setBorderPainted(true);
}
}
public void mouseExited(MouseEvent e) {
Component component = e.getComponent();
if (component instanceof AbstractButton) {
AbstractButton button = (AbstractButton) component;
button.setBorderPainted(false);
}
}
};
}
4. Tambahkan 1(satu) buah JFrame
5. Tambahkan juga component Swing JTabbed Pane diberi nama pane dan satu buah Button dengan nama btnTambah
6. Pada Tombol Action (bole pake Swing.Action atau juga Klik Dua kali pada jButton Anda) tambahkan code dibawah
int nTab;
nTab = pane.getTabCount();
String title = "Tab " + nTab;
pane.add(title, new JLabel(title));
pane.setTabComponentAt(nTab, new ButtonTabComponent(pane));
pane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
pane.setSelectedIndex(nTab);
7. Sudah selesai, tinggal dijalankan.
Source code lengkapnya dapat didownload disini
Popularity: 65% [?]
Tags: java, swing, tabbedpane
wew, aq baru taw nih, ada netbean user group wilayah medan..wah..mantep2..^^
salam kenal klo gtu..:)
Salam kenal juga bro…, semoga NUG-Medan bertumbuh disertai bertumbuhnya pengguna Java di Medan
woi ane juga pengguna java
salam nak medan juga lae…
Salam Java Juga