Java 有没有办法确定它运行的命令行控制台的大小/尺寸?
可能的重复:
我可以用Java找到控制台宽度吗?
例如,当您在 Linux 命令行中运行 nano 时,它会自动调整其文本格式的大小以适应显示尺寸,即使您即时更改它们也是如此。
我知道可能性不大,但是 Java 有没有办法检测显示大小及其所做的更改?
Possible Duplicate:
Can I find the console width with Java?
For example, when you run nano at the Linux command line, it automatically resizes its text formatting to fit the display dimensions, even as you change them on the fly.
I know it's a long shot, but is there a way for Java to do detect display size and changes made to it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要使用 JNI 来调用 ncurses 或使用具有相同功能的库。
如果您需要的只是获取维度信息,这里有一个示例 这里有对 getRowCount 和 getColumnCount 的 API 调用。
You would need to use JNI to call ncurses or use a library that does the same.
If all you need is to get dimension information, there's an example here that has API calls to getRowCount and getColumnCount.
您可以通过调用 JFrame 或任何外部容器上的 getSize 来获取正在运行 Swing 应用程序的窗口的尺寸。这就是我用于像您所描述的那样的内容:获取窗口大小,然后计算字体大小为窗口大小的某个百分比,可能有上限和下限,因此当用户在扩大窗口时缩小窗口或 150。
您可以调用 GraphicsConfiguration.getLocalGraphicsConfiguration 来获取一个对象,该对象为您提供有关图形环境的一般信息。您可能需要检查该类的 Java 文档,看看它是否提供了您想要的信息。 getMaximumWindowBounds 可能就是您正在寻找的。
您还可以使用 setExtendedState 最大化窗口,然后您可以检查当时的边界。
You can get the dimensions of the window that a Swing application is running in by calling getSize on the JFrame or whatever the outer container is. That's what I'd use for something like you describe: get the window size, then calculate the font size to be some percentage of the window size, probably with upper and lower bounds so you don't set a font size of 2 when the user shrinks the window or 150 when they grow it.
You can call GraphicsConfiguration.getLocalGraphicsConfiguration to get an object that gives you information about the graphics environment in general. You might want to check the Java Docs on that class to see if it gives the sort of information you want. getMaximumWindowBounds might be what you're looking for.
You can also maximize a window with setExtendedState, and then you could check the bounds at that time.