我正在向 JPanel 添加一个 JTabbedPane,我可以让它拉伸(stretch)到边缘,但 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;
}
}
最佳答案
你无法真正删除该边框。它是 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());
这就是我现在看到的:/image/afr8n.png
关于java - JTabbedPane 不会填满整个 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20288577/