【问题标题】:Java Swing bug with JMenuBar, JScrollPane and Windows Look And Feel带有 JMenuBar、JScrollPane 和 Windows 外观的 Java Swing 错误
【发布时间】:2020-12-03 06:52:41
【问题描述】:

我的问题是当我使用 Windows Feel and Look 将 JScrollPane 添加到空 JPanel(使用 JMenuBar 附加到 JFrame 的 JPanel)时,会发生这种情况:

JScrollPane 没有覆盖整个 JPanel:

跨平台感觉和外观不会发生这种情况:

跨平台感觉和外观涵盖所有内容:

这是我的代码:

import javax.swing.*;
import java.awt.*;

public class Test {
    public static void main(String[] args) {
        try {
         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (ClassNotFoundException e) {
         e.printStackTrace();
        } catch (InstantiationException e) {
         e.printStackTrace();
        } catch (IllegalAccessException e) {
         e.printStackTrace();
        } catch (UnsupportedLookAndFeelException e) {
          e.printStackTrace();
        }


        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame("Test");
            frame.setSize(600, 400);

            JMenuBar menuBar = new JMenuBar();
            frame.setJMenuBar(menuBar);

            JMenu menu = new JMenu("Test");
            menuBar.add(menu);

            JPanel panel = new JPanel();
            panel.setLayout(new BorderLayout());
            frame.add(panel);

            JScrollPane scrollPane = new JScrollPane();
            panel.add(scrollPane);

            frame.setVisible(true);
        });
    }
}

有修复还是我的代码?

【问题讨论】:

  • 使用 Windows 感觉和外观 - 您发布的代码未设置 Windows LAF。
  • 哎呀对不起,我没有复制它
  • @camickr 已修复,感谢告知

标签: java swing user-interface


【解决方案1】:

您可以使用空边框:

scrollPane.setBorder(BorderFactory.createEmptyBorder());

【讨论】:

  • 谢谢各位,我不知道那种方法。
猜你喜欢
  • 2011-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多