Java JFrame大小的问题,求指教!

JohnsonEE 2013-06-27 03:55:24
话不多说了,直接上代码。

public class MainFrame extends JFrame{
public MainFrame() {
setSize(500, 500);
....

}
}

这样把frame设置成了500x500的尺寸
然后在panel类中 g.fillRect(500 - 50, 500 - 50, 50, 50);
表示在frame的最右下角画一个方
问题是:
显示出来的窗口中看不到这个方块,也就是说窗口的大小小于500x500.
然后我把窗口手动的拖大以后,就能看见这个方块出现在500, 500的位置。

请问,如何让这个窗口在显示的时候就保证其尺寸是我设置的那个尺寸呢?
...全文
324 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
逍遥jc 2013-07-15
  • 打赏
  • 举报
回复
边框也占空间的。包括里面的工具栏,标题栏什么的都算在一起了。
junko2012kao 2013-07-13
  • 打赏
  • 举报
回复
坐标是以左上角(0,0)开始的,向下y坐标增大,向右横坐标增大,改成g.fillRect(500 - 100, 500 - 100, 50, 50);或者其他的值也可。
地下室森林 2013-07-12
  • 打赏
  • 举报
回复
你是要所有显示在边框里面的话要考虑装饰部分。我的win7的运行出来没多大差别的
「已注销」 2013-07-12
  • 打赏
  • 举报
回复
一般来说,窗口的大小是总左上角到右下角整个大小,包括四周的边框,所以直接用那个数值是不行的。 需要考虑边框的宽度。具体宽度是多少,根据不同的系统不同。我在xp和win7上试过,边框大小基本一致,但是还是有数值上的小差别。自己定义几个数值试一下就知道边框的宽度了。
huntor 2013-07-12
  • 打赏
  • 举报
回复
有装饰(边框等)占位置
u010904025 2013-07-12
  • 打赏
  • 举报
回复
伙计,等你用了setBounds()这个方法后,你就会知道了。
terrylmay 2013-07-11
  • 打赏
  • 举报
回复
这个还用解?问你一下Frame表示什么知道么?表示窗口..你在画图的时候操作的区域想过没有?那只是你能够进行布局,绘图的地方..你在你程序中加入this.setTitle("程序");看看程序是出现在哪的..就知道为什么显示不出来了..窗口最上面是有边框的.那也是窗口大小的一部分..
JohnsonEE 2013-07-11
  • 打赏
  • 举报
回复
按照1楼的兄弟做了,结果还是不行啊,弹出来的窗口比设定的尺寸还是小一点,画出来的那个方块有一部分在frame框体外。求解啊!
地下室森林 2013-06-27
  • 打赏
  • 举报
回复
Window、Frame和Dialog的默认布局管理器是BorderLayout 你可以前面加句话:
package csdn.programbbs_627;

import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Panel;

class Frame1 extends Frame{
	Panel p = new Panel();
	
	public Frame1(){
		setLayout(null);
		setSize(500, 500);
		add(p);
		setVisible(true);
	}
	@Override
	public void paint(Graphics g) {
		g.fillRect(500 - 50, 500 - 50, 50, 50);
	}
}
public class TextFrame {
	
	public static void main(String[] args) {
		new Frame1();
		
	}
}
java编写的计算器,能实现加减乘除。 //***该梦幻计算器与Windows附件自带计算器的标准版功能、界面相仿***// //******但还不支持键盘操作,如有需要,下一次等级将满足你**********// import java.awt.*; import java.lang.*; import javax.swing.*; import javax.swing.event.*; import java.awt.event.*; import java.awt.Component.*; import java.awt.color.*; import java.text.DecimalFormat; //*****************************************************************************// //*****************************************************************************// public class Calculator implements ActionListener //导入动作监听接口 { //******************************// //*****设计计算器界面的单位*****// JFrame frame; //定义框架 JTextField textAnswer; //定义输出显示框 JPanel panel, panel1, panel2, panel3;//定义面板作为子容器,从而达到要的界面效果 JMenuBar mainMenu; JTextField textMemory; JLabel labelMemSpace; //labelMemSpace单纯做摆设,控制面板的形状 JButton buttonBk, buttonCe, buttonC; JButton button[]; JButton buttonMC, buttonMR, buttonMS, buttonMAdd; JButton buttonDot, buttonAddAndSub, buttonAdd, buttonSub, buttonMul,buttonDiv, buttonMod; JButton buttonSqrt, buttonDao, buttonEqual; JMenu editMenu, viewMenu, helpMenu; JMenuItem copyItem, pasteItem, tItem, sItem, numberGroup, topHelp, aboutCal,myCollege; DecimalFormat df; //设置数据输出精度 boolean clickable; //控制当前能否按键 double memoryd; //使用内存中存储的数字 int memoryi; double vard, answerd; //用来保存double型数据的中间值(vard)和最后结果(answerd) short key = -1, prekey = -1; //key用来保存当前进行何种运算,prekey用来保存前次进行何种运算 boolean clear = false; String copy; //做复制用 JTextArea help; //帮助 JScrollPane scrollHelp; static boolean One =true; //******************// //*****构造函数开始*****// public Calculator() { clickable = true; answerd = 0; frame = new JFrame("梦幻计算器--SWE08008"); frame.setResizable(false);//不允许改变计算器的大小 frame.setLocation(250,150);//设置计算器的起始位置 frame.setBackground(Color.YELLOW); df = new DecimalFormat("0.##############"); //设置数据输出精度(对于double型值)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧