我对此很陌生。当我手动更改Jframe边框大小时,它仍会更新为" 19201080" ,我试图获得实际的Jframe宽度和高度,以便我能够根据jframe屏幕大小更改Circle组件的大小,
CircleComponent类
git checkout origin/feature/<featurename>
git merge --squash origin/feature/<featurename>
圆圈类:
package advancedjava;
import java.awt.*;
import javax.swing.JComponent;
import java.awt.Toolkit;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Ellipse2D.Double;
/**
*
* @author eeu8c6
*/
public class CircleComponent extends JComponent{
@Override
public void paintComponent(Graphics g){
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int width = screenSize.width;
int height = screenSize.height;
System.out.println("test: " + width + height);
double swidth = width * 0.8;
double sheight = height * 0.8;
Graphics2D g2 = (Graphics2D) g;
Circle c1 = new Circle(50, 50);
g2.setPaint(Color.RED);
c1.draw(g2);
Ellipse2D ellipse = new Ellipse2D.Double();
g2.fill(ellipse);
}
}
答案 0 :(得分:3)
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
这是一种糟糕的方法,它没有考虑其他屏幕元素,如任务栏和停靠栏,然后可以在应用程序的顶部显示
我试图获取实际的Jframe宽度和高度,以便我能够根据jframe屏幕尺寸更改Circle组件的大小
然后在组件上调用getWidth
和getHeight
。该组件代表您可用的可见绘画范围,任何更大的赢取都不会显示(将被裁剪)
public class CircleComponent extends JComponent{
@Override
public void paintComponent(Graphics g){
int width = getWidth().width;
int height = getHeight().height;
//....
请记住,一个组件是&#34;包含&#34;在另一个容器中,它有自己的大小,组件的大小也可能受到布局限制的影响。
框架也由其他元素(框架边框和标题栏)组成,这些元素会减损应用程序可用的可视空间
如果您希望调整窗口的最大可用大小,您可以简单地使用Frame#setExtendedState
并将其传递给JFrame#MAXIMIZED_BOTH
,这样可以根据操作系统的要求最大化窗口< / p>
答案 1 :(得分:2)
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
用Gets the size of the screen. On systems with multiple displays, the primary display is used. Multi-screen aware display dimensions are available from GraphicsConfiguration and GraphicsDevice.
工具包为您提供物理屏幕大小。获取JFrame
来电frame.getSize();