1
A
回答
3
可以从基德使用JideTabbedPane。
积德是商用库,但这个JideTabbedPane类是开源的,在这里得到源代码:http://java.net/projects/jide-oss/
的截图如下图所示。
3
没有,没有覆盖整个BacisTabbedPaneUI直接不可能的,所有的例子都是不同的质量(外观和本地OS非常敏感),very good example by aephyr,
我的看法是JTabbedPane的*** JComponent的,有趣的例子用器具玻璃面板(您设置了一些边界JMenuBar的如提出etchech &线边框??? :-)
疯狂和肮脏的黑客
从代码
import java.awt.ComponentOrientation;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Rectangle;
import javax.swing.Box;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.SwingUtilities;
public class TabbedPaneWithManuBar {
public void makeUI() {
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
for (int i = 0; i < 20; i++) {
JPanel panel = new JPanel();
panel.setName("tab" + (i + 1));
panel.setPreferredSize(new Dimension(600, 100));
tabbedPane.add(panel);
}
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(tabbedPane);
frame.pack();
Rectangle tabBounds = tabbedPane.getBoundsAt(0);
Container glassPane = (Container) frame.getRootPane().getGlassPane();
glassPane.setVisible(true);
glassPane.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.weightx = 1.0;
gbc.weighty = 1.0;
gbc.fill = GridBagConstraints.NONE;
gbc.insets = new Insets(tabBounds.y + 23, 0, 0, 5);
gbc.anchor = GridBagConstraints.NORTHEAST;
JMenuBar menuBar = new JMenuBar();
menuBar.add(createMenu("Menu Example 1"));
menuBar.add(createMenu("Menu Example 1"));
menuBar.add(createMenu("Menu Example 1"));
menuBar.add(Box.createHorizontalGlue());
menuBar.add(createMenu("About"));
menuBar.setPreferredSize(new Dimension(menuBar.getPreferredSize().width , (int) tabBounds.getHeight() - 2));
glassPane.add(menuBar, gbc);
//JButton button = new JButton("My Button Position");
//button.setPreferredSize(new Dimension(button.getPreferredSize().width, (int) tabBounds.getHeight() - 2));
//glassPane.add(button, gbc);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private JMenu createMenu(String title) {
JMenu m = new JMenu(title);
m.add("Menu item #1 in " + title);
m.add("Menu item #2 in " + title);
m.add("Menu item #3 in " + title);
if (title.equals("About")) {
m.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
}
return m;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new TabbedPaneWithManuBar().makeUI();
}
});
}
}
相关问题
- 1. 创建后,我可以创建一个X11窗口OpenGL吗?
- 2. UITableView可以用来创建一个网格吗?
- 3. 可以用痣来创建一个密封的类吗?
- 4. 我可以使用gitlab-rails来创建一个新的rails应用程序吗?
- 5. 我可以用用户输入创建一个t4文件吗?
- 6. Ruby on Rails:我可以做一个“link_to”来调用创建操作吗?
- 7. 我可以用一行代码创建2个目录吗?
- 8. c#我可以用streamwriter创建一个动态文件名吗?
- 9. 我可以用Qt API创建一个.MP4容器吗?
- 10. 我们可以使用php创建一个单词模板吗?
- 11. 我可以用Cython创建一个静态C数组吗?
- 12. 我可以用图像列表创建一个JFrame吗?
- 13. 我可以用C#4.0创建一个COM服务器吗?
- 14. 我们可以用Generic创建一个Dictionary吗?
- 15. OrientDB我可以用java API创建一个“集群”吗?
- 16. 我可以用Python创建一个firefox插件吗?
- 17. 我可以用查询结果创建一个新对象吗?
- 18. 我可以用Drupal创建一个AWeber广播吗?
- 19. IMocksControl可以创建一个IMockBuilder吗?
- 20. 你可以创建一个ITracingService吗?
- 21. inlineformset_factory可以创建一个tabularInline吗?
- 22. 我可以创建一个可以修改用户界面的线程吗?我可以放弃吗?
- 23. 我可以创建一个类似不可变(float)的类吗?
- 24. ASP.NET MVC - 我可以创建一个不可见的Ajax.ActionLink()吗?
- 25. 我可以从一个项目创建多个dll吗?
- 26. 我可以为多个版本的Python创建一个蛋吗?
- 27. 我可以创建一个允许我创建HTML内容块的指令吗?
- 28. Python - 我可以创建一个创建唯一列表的函数吗?
- 29. 我可以创建一个新的SensorEvent对象来测试onSensorChanged()函数吗?
- 30. 我可以创建一个基类来继承这些信息吗?
@Ofek罗恩1.使用了玻璃面板适当布局管理,2.然后(例如),您可以覆盖所有需要的矩形从ConttentPane,(看到我的浮动JMenu的JTabbedPane的布局在GlassPane中)3.给GLassPane一些支持trapsparency或transluceny(更好)的JComponent(带有背景或图标的JPanel或nonopaque JLabel)4. RootPane代码错误,(jPanel.add(jRootPane); - 为什么要创建一个新的ContentPane)5.不运行你的代码,不是删除后的理由 – mKorbel 2014-11-03 12:16:46