我有一个要求,将最小化和关闭按钮放在我的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