新手菜鸟提问,关于JButton的一些思考 ...

weidu23 2013-05-07 09:51:04
先不多说,发个代码:


import javax.swing.*;
public class test {
public static void main(String [] args)
{
JFrame jf = new JFrame();
//自定义的jf的坐标和大小,保证jf一直在屏幕中央,且大小为屏幕一半大,我屏幕1280*760,好像吧
Coord_And_Size._profun_DefaultCenterAndHalf(jf);
jf.setVisible(true);
JPanel jp = new JPanel();
jf.add(jp);
JButton jb = new JButton();
jb.setSize(300, 200);//这里jb设置了大小
jp.add(jb);
}
}


注意: 这里jb设置了大小,而且设置的好大哦 !!!
但是,却没有改变一丝丝的jb大小,为什么 ?

此时,再看一个代码

import javax.swing.*;
public class test {
public static void main(String [] args)
{
JFrame jf = new JFrame();
//自定义的jf的坐标和大小,保证jf一直在屏幕中央,且大小为屏幕一半大,我屏幕1280*760,好像吧
Coord_And_Size._profun_DefaultCenterAndHalf(jf);
jf.setVisible(true);
JButton jb = new JButton("第二次");
jf.add(jb);
}
}


和上一个代码不一样,我没有在jf(即JFrame)中放入jp(即JPanel),直接把jb(即JButton)放入jf,
我没有设置jb大小,jb却占领了整个屏幕,为什么?

问:
两种不同的情况,搞得我好烦,可弄不出个所以然来,求教了,各位!
...全文
180 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
weidu23 2013-05-08
  • 打赏
  • 举报
回复
引用 6 楼 qbz_96 的回复:
jp.setLayout(null);
要先将jpanel的布局管理器设置为Null,然后你就可以设置JButton的大小了,可以试试!
这额的确,谢了
weidu23 2013-05-08
  • 打赏
  • 举报
回复
引用 7 楼 zhang5059 的回复:
布局管理器,就是管理你的布局的,在布局管理器不是null的情况下你对你的控件进行的某些的操作会被他(布局管理器)给覆盖的,有个方倒是可是设置大小 getPreferredSize() 这个方法可以完成你的需求。
懂了
weidu23 2013-05-08
  • 打赏
  • 举报
回复
引用 5 楼 kiritor 的回复:
1、FlowLayout自动控制控件的大小和位置 2、貌似是有点困难呢
谢谢
weidu23 2013-05-07
  • 打赏
  • 举报
回复
引用 1 楼 kiritor 的回复:
布局情况的影响而已,后一种情况JFrame的布局方式貌似默认的方位布局 (东、南、西、北、center)默认是居中的,控件会盛满 至于具体什么情况,楼主还是得去了解下Swing的布局
JFrame默认布局为BorderLayout,JPanel默认为FlowLayout . 如果说jf的确是填满的话 ... jp里面添加jb (即:jp.add(jb) )改变不了jb的大小,我就想不通了,问题在这里 . 可否解释下,解我疑惑 ? 【注:上面代码中Coord_And_Size._profun_DefaultCenterAndHalf(jf)是我自定义的,这步代码看官可自行改掉】
LCore 2013-05-07
  • 打赏
  • 举报
回复
引用 楼主 weidu23 的回复:
先不多说,发个代码:

import javax.swing.*;
public class test {
	public	static	void	main(String [] args)
	{
		JFrame jf = new JFrame();
                //自定义的jf的坐标和大小,保证jf一直在屏幕中央,且大小为屏幕一半大,我屏幕1280*760,好像吧
		Coord_And_Size._profun_DefaultCenterAndHalf(jf);
		jf.setVisible(true);
		JPanel	jp	=	new	JPanel();
		jf.add(jp);
		JButton jb = new JButton();
		jb.setSize(300, 200);//这里jb设置了大小
		jp.add(jb);
	}
}
注意: 这里jb设置了大小,而且设置的好大哦 !!! 但是,却没有改变一丝丝的jb大小,为什么 ? 此时,再看一个代码

import javax.swing.*;
public class test {
	public	static	void	main(String [] args)
	{
		JFrame jf = new JFrame();
                //自定义的jf的坐标和大小,保证jf一直在屏幕中央,且大小为屏幕一半大,我屏幕1280*760,好像吧
		Coord_And_Size._profun_DefaultCenterAndHalf(jf);
		jf.setVisible(true);
		JButton jb = new JButton("第二次");
		jf.add(jb);
	}
}
和上一个代码不一样,我没有在jf(即JFrame)中放入jp(即JPanel),直接把jb(即JButton)放入jf, 我没有设置jb大小,jb却占领了整个屏幕,为什么? 问: 两种不同的情况,搞得我好烦,可弄不出个所以然来,求教了,各位!
布局情况的影响而已,后一种情况JFrame的布局方式貌似默认的方位布局 (东、南、西、北、center)默认是居中的,控件会盛满 至于具体什么情况,楼主还是得去了解下Swing的布局
书断华 2013-05-07
  • 打赏
  • 举报
回复
布局管理器,就是管理你的布局的,在布局管理器不是null的情况下你对你的控件进行的某些的操作会被他(布局管理器)给覆盖的,有个方倒是可是设置大小 getPreferredSize() 这个方法可以完成你的需求。
qbz_96 2013-05-07
  • 打赏
  • 举报
回复
jp.setLayout(null);
要先将jpanel的布局管理器设置为Null,然后你就可以设置JButton的大小了,可以试试!
LCore 2013-05-07
  • 打赏
  • 举报
回复
1、FlowLayout自动控制控件的大小和位置 2、貌似是有点困难呢
weidu23 2013-05-07
  • 打赏
  • 举报
回复
引用 3 楼 kiritor 的回复:
你要设置jbutton的大小的话,jpanel的布局应该设为null 之后对jbutton设定大小,并且指定其坐标的位置(相对jpanel)
呵呵,这样解决倒是不错 。 不过,我还是有两个疑惑: 1、为什么在FlowLayout里面没办法setSize() ? 2、由于swing是带有布局管理的Componenet,所以用布局管理器应该比 绝对布局 好点, 那么我非要在JPanel里面设置jb大小而不改变JPanel,有否可行的思路呢? 求解惑 ... 提前先谢谢你 ...
LCore 2013-05-07
  • 打赏
  • 举报
回复
你要设置jbutton的大小的话,jpanel的布局应该设为null
之后对jbutton设定大小,并且指定其坐标的位置(相对jpanel)
package com.kiritor;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MyFrame extends JFrame {

private JPanel jPanel ;
private JButton button ;
public MyFrame() {
jPanel = new JPanel();
button = new JButton("按钮");
jPanel.setLayout(null);//要对控件设置大小,父容器布局方式为null
jPanel.add(button);
button.setBounds(60,10,80,40);//button的坐标和大小
this.add(jPanel);
this.setSize(200, 100);
this.setLocationRelativeTo(null);//center
this.setVisible(true);


}
public static void main(String[] args) {
new MyFrame();
}

}



内容概要:本文围绕2026年高教社杯全国大学生数学建模竞赛E题“SEM广告投放策略”,构建了一个涵盖诊断、分类、优化与鲁棒决策的完整建模框架。基于某互联网公司142万元的SEM投放数据,文章从设计质量、关键词管理、出价预算和时间维度四个方面系统评估投放策略的合理性,揭示了消费集中、展位分层、工作日效应显著及假日效应分化等核心规律。提出基于成本—效益二维空间的五类关键词划分模型(黄金词、重点词、潜力词、问题词、无效词),结合中位数分割与聚类校验实现科学分类。在此基础上,建立预算约束下的0-1整数规划模型,采用两阶段算法求解最优关键词选择与出价策略,实现单位注册成本下降约20%。进一步引入CVaR鲁棒优化框架,有效应对竞价、点击、转化等不确定性,提升策略在极端情景下的稳定性与抗风险能力。; 适合人群:具备一定数据分析与数学建模基础,参与数学建模竞赛或从事数字营销优化的研究人员与从业者,尤其适合高校本科生、研究生及企业数据分析师。; 使用场景及目标:①用于数学建模竞赛中广告投放类问题的建模与求解;②为企业SEM广告投放提供科学的诊断、分类与优化方法;③实现预算约束下的关键词选择与出价决策;④在不确定环境下提升广告投放策略的鲁棒性与抗风险能力。; 阅读建议:此资源不仅提供完整的建模思路与算法实现,还包含实际运行结果与策略输出模板,建议读者结合代码实践,深入理解模型构建逻辑,重点关注分类规则设计、整数规划建模及鲁棒优化的实现过程,并尝试在类似业务场景中进行迁移应用。
内容概要:本文研究了一种面向高维约束空间的多种群灰狼优化算法(MP-GWO),并将其应用于多无人机协同航迹规划问题中。通过引入多种群机制对标准灰狼优化算法进行改进,增强了算法的全局搜索能力,有效克服了早熟收敛问题,提升了在复杂高维非线性约束环境下的优化性能。文章系统阐述了算法的设计原理、收敛性理论分析及在多无人机路径规划中的性能保障机制,结合Matlab实现了完整的仿真验证,充分展示了该算法在路径安全性、避障能力、收敛速度与解的质量等方面的优越性。同时,研究深入探讨了动态环境下的协同规划策略与防撞机制,进一步提高了系统的鲁棒性与实际应用价值。; 适合人群:具备一定智能优化算法基础,从事无人机路径规划、群体智能优化、智能控制、运筹学或自动化等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①解决多无人机在复杂三维空间中的协同航迹规划与实时避障问题;②提升高维、强约束非线性优化问题的求解效率与稳定性;③为智能无人系统提供可扩展的优化框架与可靠的仿真验证工具; 阅读建议:建议读者结合提供的Matlab代码深入理解算法实现细节,重点关注多种群划分策略、种群间信息交换机制与约束处理方法的设计原理,并可通过调整参数或测试不同场景进行复现实验,以掌握其在实际工程问题中的应用技巧与优化能力。

62,621

社区成员

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

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