我有一個要求,將最小化和關閉按鈕放在我的JTabbedPane
結束的右角。爲了清楚起見,圓圈區域是兩個按鈕,我需要(我有一個未修飾的幀)所有選項卡末尾的按鈕關閉窗口
任何人都可以請指導我如何實現這一目標?我的問題是(更多)按鈕定位(在JTabbedPane上),而不是實現最小化/關閉的功能
謝謝!
我有一個要求,將最小化和關閉按鈕放在我的JTabbedPane
結束的右角。爲了清楚起見,圓圈區域是兩個按鈕,我需要(我有一個未修飾的幀)所有選項卡末尾的按鈕關閉窗口
任何人都可以請指導我如何實現這一目標?我的問題是(更多)按鈕定位(在JTabbedPane上),而不是實現最小化/關閉的功能
謝謝!
所有添加到JTabbedPane中的組件都將被包裝在標籤中。這意味着將按鈕直接添加到JTabbedPane是不可能的。如果您希望直接將關閉按鈕和最小化按鈕作爲選項卡窗格的一部分(而不是稍微放在一邊),我建議使用按鈕將自定義選項卡組件(JTabbedPane.setTabComponentAt()
)添加到選項卡窗格中。由於該按鈕是該選項卡的唯一組件,選擇實際的「選項卡」本身是不可能的,只有按鈕事件會發生。使用JTabbedPane不可能修復選項卡的位置,這將導致這兩個「按鈕選項卡」在您選擇的佈局內浮動。在其左側插入更多製表符會導致始終以關閉和最小化按鈕結束製表符列表。
我得到了解決這個問題:只要把工具欄選項卡面板
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.EmptyBorder;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import javax.swing.JTabbedPane;
import java.awt.FlowLayout;
import java.awt.Insets;
import javax.swing.JToolBar;
import java.awt.ComponentOrientation;
import javax.swing.JButton;
import java.awt.Cursor;
public class PanelTab extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (InstantiationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalAccessException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (UnsupportedLookAndFeelException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
PanelTab frame = new PanelTab();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public PanelTab() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
GridBagLayout gbl_contentPane = new GridBagLayout();
gbl_contentPane.columnWidths = new int[] { 424, 0 };
gbl_contentPane.rowHeights = new int[] { 51, 0 };
gbl_contentPane.columnWeights = new double[] { 1.0, Double.MIN_VALUE };
gbl_contentPane.rowWeights = new double[] { 1.0, Double.MIN_VALUE };
contentPane.setLayout(gbl_contentPane);
JPanel panel = new JPanel();
GridBagConstraints gbc_panel = new GridBagConstraints();
gbc_panel.fill = GridBagConstraints.BOTH;
gbc_panel.gridx = 0;
gbc_panel.gridy = 0;
contentPane.add(panel, gbc_panel);
GridBagLayout gbl_panel = new GridBagLayout();
gbl_panel.columnWidths = new int[] { 184, 0 };
gbl_panel.rowHeights = new int[] { 54, 0 };
gbl_panel.columnWeights = new double[] { 1.0, Double.MIN_VALUE };
gbl_panel.rowWeights = new double[] { 1.0, Double.MIN_VALUE };
panel.setLayout(gbl_panel);
JToolBar toolBar = new JToolBar();
toolBar.setOpaque(false);
toolBar.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
toolBar.setFloatable(false); // The toolbar must not be float
GridBagConstraints gbc_toolBar = new GridBagConstraints();
gbc_toolBar.anchor = GridBagConstraints.NORTHEAST;
gbc_toolBar.gridx = 0;
gbc_toolBar.gridy = 0;
panel.add(toolBar, gbc_toolBar);
JButton btnHola = new JButton("You must put your exit icon here");
btnHola.setOpaque(false);
toolBar.add(btnHola);
JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
GridBagConstraints gbc_tabbedPane = new GridBagConstraints();
gbc_tabbedPane.fill = GridBagConstraints.BOTH;
gbc_tabbedPane.gridx = 0;
gbc_tabbedPane.gridy = 0;
panel.add(tabbedPane, gbc_tabbedPane);
JPanel panel_1 = new JPanel();
tabbedPane.addTab("New tab", null, panel_1, null);
}
}
我想這可能會幫助你的身邊......
您使用一個IDE?什麼? – elyashiv
您是否有關於此要求的其他背景?這是一個獨立的文檔還是一個更大的html頁面的一部分?一種可能的解決方案是使用CSS「position:absolute」,並使用right/top和margin/padding來定位它。如果這個想法不起作用,你能提供關於這個問題的更多細節嗎? – jennyfofenny
我使用Eclipse進行所有編碼。我沒有用於我的GUI設計的IDE。如果我不清楚,這就是我所要求的: 我有一個未添加JFrame的JFrame,我添加了一個JTabbedPane(JTabbedPane輪流上有4個選項卡)。我想在我的JTabbedPane的末尾有2個按鈕,如上圖所示。到目前爲止,圖像的圓圈部分對我而言並不存在(它只是通過圖像編輯器添加了我的需求的表示) – user1639485