buaa21 / summer2020

软件学院《程序设计实践》2020小学期仓库
40 stars 8 forks source link

Java Swing JFrame 上的组件无法按照我需要的大小和坐标出现 #191

Closed cynic-1 closed 3 years ago

cynic-1 commented 3 years ago

先简单叙述一下我的需求: 我的选题是麻将游戏,目前命令行模式的已经完成,现在需要让每个麻将都跟图片对应起来。

目前的方案是让麻将类extends JButton 组件, 然后add到JFrame上,或者先add到JPanel上,再把JPanel add到JFrame上。

但是往JPanel或JFrame上add JComponent 的时候,swing经常忽略我实际设置的大小和位置,而是按照其默认的格式进行显示。

请问这个问题怎么解决?

比如我想要实现下图的效果,没有牌墙也可以,应该怎么使用Swing? image

crclz commented 3 years ago

你的问题估计是使用了setSizesetSizesetPreferredSize的区别: https://stackoverflow.com/questions/1783793/java-difference-between-the-setpreferredsize-and-setsize-methods-in-compone

cynic-1 commented 3 years ago

你的问题估计是使用了setSizesetSizesetPreferredSize的区别: https://stackoverflow.com/questions/1783793/java-difference-between-the-setpreferredsize-and-setsize-methods-in-compone

用setPreferredSize 貌似没有解决组件出现的坐标的问题

crclz commented 3 years ago

将容器的layout设置为Absolute Layout,就可以快乐的使用setSize和设置坐标了。 https://docs.oracle.com/javase/tutorial/uiswing/layout/none.html

cynic-1 commented 3 years ago

将容器的layout设置为Absolute Layout,就可以快乐的使用setSize和设置坐标了。 https://docs.oracle.com/javase/tutorial/uiswing/layout/none.html

太感动了,thanks