我正在为我的JPanel添加一个JTabbedPane,我可以让它延伸到边缘,但JTabbedPane仍然在它周围留下一个丑陋的边界。我认为你刚刚与窗口边缘合并的边缘。有谁知道如何做到这一点?这是我所看到的图片。
这是我创建布局的方法:
public class MainFrame extends JFrame {
private static final long serialVersionUID = 6112493789711533870L;
private final int FRAME_WIDTH = 720;
private final int FRAME_HEIGHT = 405;
private JPanel mainLayout;
GridBagConstraints c = new GridBagConstraints();
public MainFrame(String t) {
super(t);
setSize(FRAME_WIDTH, FRAME_HEIGHT);
add(createLayout());
}
public JPanel createLayout() {
this.mainLayout = new JPanel(new GridBagLayout());
JTabbedPane mainTabs = new JTabbedPane();
mainTabs.setTabPlacement(JTabbedPane.LEFT);
JComponent projectPanel = makeTextArea();
mainTabs.addTab("Projects", projectPanel);
JComponent tasksPanel = makeTextArea();
mainTabs.addTab("Tasks", tasksPanel);
JComponent optionsPanel = makeTextArea();
mainTabs.addTab("Options", optionsPanel);
c.fill = GridBagConstraints.BOTH;
c.weightx = 1.0;
c.weighty = 1.0;
c.insets = new Insets(0,0,0,0);
mainLayout.add(mainTabs, c);
return mainLayout;
}
private JScrollPane makeTextArea() {
JTextArea textArea = new JTextArea();
textArea.setEditable(true);
JScrollPane scrollTextArea = new JScrollPane(textArea);
scrollTextArea.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
return scrollTextArea;
}
}
答案 0 :(得分:1)
你无法真正删除该边框。它是JTabbedPane UI的一部分。然而,我总是遇到的问题恰恰相反:Nimbus的外观和感觉是令人愤怒的,唯一一个不的标签页边框。因此,如果您真的想避开边框,可以在应用程序启动时运行此代码一次使用Nimbus:
try {
UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (Throwable t) {
throw new RuntimeException(t);
}
否则,我会建议在组件周围添加一个额外的空边框,这样细边框看起来就不那么难了。
编辑:除了上述内容之外,尝试通过在makeTextArea()
中添加此内容来删除JScrollPane的边框:
scrollTextArea.setBorder(BorderFactory.createEmptyBorder());
这就是我现在看到的:http://i.stack.imgur.com/afr8n.png
答案 1 :(得分:0)
这取决于使用的外观,例如尝试
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
使用系统外观。它仍然有边界,但它正在变得更好。如果你想完全摆脱边框,你需要改变组件的外观。
答案 2 :(得分:0)
您可以将JTabbedPane直接添加到您的JFrame中......为什么还需要额外的JPanel?