我有这个我无法处理的小虫子.我将JPanel的大小设置为(150,90),但paintComponent()中的代码显示为(160,100).怎么了?谢谢你的时间和帮助.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test2 extends JPanel{
public static void main(String[] args) {
JFrame window = new JFrame("Test");
Test2 content = new Test2();
window.setContentPane(content);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setLocation(120,70);
window.pack();
window.setResizable(false);
window.setVisible(true);
}
Test2(){
setBackground( new Color(0,120,0) );
setPreferredSize( new Dimension(150, 90));
repaint();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor( Color.YELLOW);
g.drawRect(0, 0, 150, 90);
System.out.println(this.getWidth());
System.out.println(this.getHeight());
}
}
Run Code Online (Sandbox Code Playgroud)
控制台输出表明大小为(160,90).黄色矩形显示相同.
window.pack();
window.setResizable(false);
Run Code Online (Sandbox Code Playgroud)
应该:
window.setResizable(false);
window.pack();
Run Code Online (Sandbox Code Playgroud)
将窗口更改为不可调整大小会更改窗口的"chrome"(外部包装) - 它可能会变得更厚或更薄.如果我们在调用pack之前执行此操作,Swing将正确处理更改的chrome.
Test2
应覆盖首选大小方法.@Override
表示法. 归档时间: |
|
查看次数: |
72 次 |
最近记录: |