Java 顶部带有标签的选项卡窗格
我需要添加一个JLabel/JPanel,如图所示。调整框架大小时,选项卡式窗格和标签/面板都应保留。标签和选项卡式窗格内的面板是独立的。我该怎么做 我需要添加一个JLabel/JPanel,如图所示。在调整 框架选项卡式窗格和标签/面板均应放置。这个 标签和选项卡式窗格内的面板是独立的。。如果有的话 一有解决办法,请帮帮我 您可以使用:Java 顶部带有标签的选项卡窗格,java,swing,user-interface,overlay,jtabbedpane,Java,Swing,User Interface,Overlay,Jtabbedpane,我需要添加一个JLabel/JPanel,如图所示。调整框架大小时,选项卡式窗格和标签/面板都应保留。标签和选项卡式窗格内的面板是独立的。我该怎么做 我需要添加一个JLabel/JPanel,如图所示。在调整 框架选项卡式窗格和标签/面板均应放置。这个 标签和选项卡式窗格内的面板是独立的。。如果有的话 一有解决办法,请帮帮我 您可以使用: 玻璃板 如果可能的话,我会使用JLayer(需要Java7)。下面是一个使用JLayer的快速示例(正如mKorbel所建议的): import jav
如果可能的话,我会使用JLayer(需要Java7)。下面是一个使用JLayer的快速示例(正如mKorbel所建议的):
import java.awt.*;
导入javax.swing.*;
导入javax.swing.plaf.*;
公共类TopRightCornerLabelLayerUITest{
公共静态JComponent makeUI(){
JTabbedPane选项卡=新建JTabbedPane();
tab.addTab(“新tab1”,新JLabel(“1”));
tab.addTab(“新Tab2”,新JLabel(“2”));
JPanel p=newjpanel(newborderlayout());
p、 添加(新的JLayer(选项卡,新的TopRightCornerLabelLayerUI());
返回p;
}
私有静态void createAndShowUI(){
JFrame f=新的JFrame();
f、 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f、 getContentPane().add(makeUI());
f、 设置大小(320240);
f、 setLocationRelativeTo(空);
f、 setVisible(真);
}
公共静态void main(字符串[]args){
invokeLater(新的Runnable(){
@重写公共无效运行(){
createAndShowUI();
}
});
}
}
类TopRightCornerLabelLayerUI扩展了LayerUI{
私有JLabel l=新JLabel(“右角的标签”);
private JPanel rubberStamp=新JPanel();
@替代公共空白绘制(图形g、J组件c){
超级油漆(g,c);
维度d=l.getPreferredSize();
intx=c.getWidth()-d.width-5;
旋转度。油漆组件(g、l、橡胶垫、x、2、d.宽度、d.高度);
}
}
太棒了!!工作…谢谢你能告诉我如何在这个标签上添加一个JPOPUPMENUS(“右角的标签”),在这个标签上添加一些菜单项吗。请注意,我猜您可能希望覆盖LayerUI#processMouseEvent(MouseEvent e,JLayer l)
并这样做:if(labelRect.contains(pt)和&e.isPopupTrigger())popup.show(选项卡窗格,pt.x,pt.y)代码>
import java.awt.*;
import javax.swing.*;
import javax.swing.plaf.*;
public class TopRightCornerLabelLayerUITest {
public static JComponent makeUI() {
JTabbedPane tab = new JTabbedPane();
tab.addTab("New tab1", new JLabel("1"));
tab.addTab("New Tab2", new JLabel("2"));
JPanel p = new JPanel(new BorderLayout());
p.add(new JLayer<JComponent>(tab, new TopRightCornerLabelLayerUI()));
return p;
}
private static void createAndShowUI() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(makeUI());
f.setSize(320, 240);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
createAndShowUI();
}
});
}
}
class TopRightCornerLabelLayerUI extends LayerUI<JComponent> {
private JLabel l = new JLabel("A Label at right corner");
private JPanel rubberStamp = new JPanel();
@Override public void paint(Graphics g, JComponent c) {
super.paint(g, c);
Dimension d = l.getPreferredSize();
int x = c.getWidth() - d.width - 5;
SwingUtilities.paintComponent(g, l, rubberStamp, x, 2, d.width, d.height);
}
}