java - Java swing Frame高度太大
问题描述
我的应用程序的主框架有很多垂直的内容,所以我把它放在一个 ScrollPane 中。如果屏幕内容太多,无法容纳,则 ScrollPane 会做它的事情,我可以滚动。
但是,框架高度总是比屏幕高度大 20 像素,这真的很烦人。
MWE:
import java.awt.Toolkit;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
public class tests
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS) );
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS) );
for (int i = 0; i < 100; i ++)
panel.add(new JLabel("Label") );
JScrollPane scroll_pane = new JScrollPane(panel,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
frame.add(scroll_pane);
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
System.out.println(Toolkit.getDefaultToolkit().getScreenSize().getHeight() );
System.out.println(frame.getHeight() );
}
}
对我来说,输出是
1080.0
1100
我怎样才能解决这个问题?
编辑:我已经尝试过了frame.setExtendedState(JFrame.MAXIMIZED_VERT);
,但这并没有改变任何东西。frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
确实有效,但我不希望窗口跨越整个宽度!
解决方案
推荐阅读
- html - 如果每个文件都有唯一的数字值,如何一次替换多个文件中的标签?
- unit-testing - 自 ag-grid 集成以来,Jest vuejs 崩溃
- php - localhost 不显示与公共域相同的错误
- java - Android Studio:将新的 java 文件添加到现有包 - “未解决的参考”
- python - Azure 函数应用:Microsoft.Azure.WebJobs.EventHubs:值不能为空。(参数'receiverConnectionString')
- ruby - Ruby:如何使用 caller_locations 从我的 gem 中找到提供信息的错误消息?
- python - 在 Pyspark 中,如何检查文本文件中的连续单词是否以相同的字母开头?
- c - 为什么变量声明的位置很重要?
- java - Mockito - 仅针对特定参数的模拟方法调用
- javascript - 如何在 Jest 中使用 axios 模拟 API 调用?