如何禁用JFrame的最大化Button,但是又可以resize?

terrorist 2003-12-18 10:37:52
如题
...全文
143 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
007remember 2003-12-18
  • 打赏
  • 举报
回复
目前我还实现不了手动拖大拖小Frame
我写了个通过程序代码改变窗体大小的程序
注意45行代码调用:f.setResizable(false);

代码如下:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class SimpleFrameTest implements ComponentListener
{
public void componentMoved(ComponentEvent e) {
Component c = e.getComponent();
Point p = c.getLocation();
System.out.println("Component moved to (" + p.x + ", "
+ p.y + ")");
}

public void componentResized(ComponentEvent e) {
Component c = e.getComponent();
Dimension d = c.getSize();
System.out.println("Component resized: width " + d.width +
", height " + d.height);
}

public void componentShown(ComponentEvent e) {
System.out.println("Component made visible");
}

public void componentHidden(ComponentEvent e) {
System.out.println("Component made invisible");
}

public static void main(String[] args)
{
JFrame f = new JFrame("Simple frame test");
f.setSize(300, 200);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
System.exit(0);
}
});

f.setVisible(true);
f.setResizable(false);

try {
Thread.sleep(5000); // Delay a bit
f.getContentPane().setLayout(null);
Thread.sleep(5000); // Delay a bit
f.setSize(100, 100); // Change size
Thread.sleep(5000); // Delay a bit
f.setSize(200, 200); // Move ourselves
Thread.sleep(5000); // Delay a bit
Thread.sleep(5000); // Delay a bit
f.setSize(300, 400); // Move ourselves
Thread.sleep(5000); // Delay a bit
f.setSize(600, 600); // Change size
Thread.sleep(5000); // Delay a bit
f.setSize(800, 800);

} catch (Exception e) {
System.out.println(e);
}

System.exit(0);
}
}
代码如下:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class SimpleFrameTest implements ComponentListener
{
public void componentMoved(ComponentEvent e) {
Component c = e.getComponent();
Point p = c.getLocation();
System.out.println("Component moved to (" + p.x + ", "
+ p.y + ")");
}

public void componentResized(ComponentEvent e) {
Component c = e.getComponent();
Dimension d = c.getSize();
System.out.println("Component resized: width " + d.width +
", height " + d.height);
}

public void componentShown(ComponentEvent e) {
System.out.println("Component made visible");
}

public void componentHidden(ComponentEvent e) {
System.out.println("Component made invisible");
}

public static void main(String[] args)
{
JFrame f = new JFrame("Simple frame test");
f.setSize(300, 200);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
System.exit(0);
}
});

f.setVisible(true);
f.setResizable(false);

try {
Thread.sleep(5000); // Delay a bit
f.getContentPane().setLayout(null);
Thread.sleep(5000); // Delay a bit
f.setSize(100, 100); // Change size
Thread.sleep(5000); // Delay a bit
f.setSize(200, 200); // Move ourselves
Thread.sleep(5000); // Delay a bit
Thread.sleep(5000); // Delay a bit
f.setSize(300, 400); // Move ourselves
Thread.sleep(5000); // Delay a bit
f.setSize(600, 600); // Change size
Thread.sleep(5000); // Delay a bit
f.setSize(800, 800);

} catch (Exception e) {
System.out.println(e);
}

System.exit(0);
}
}
terrorist 2003-12-18
  • 打赏
  • 举报
回复
我只是想用户点击最大化后没有动作,但是可以手动拖大拖小Frame, :) 请教了
CoolAbu 2003-12-18
  • 打赏
  • 举报
回复
你seResizable(false);然后做2个Button,一个是增大,一个缩小。

你又不想让它最大化,又想能够Resize,这本身有点矛盾呀。

terrorist 2003-12-18
  • 打赏
  • 举报
回复
问题是,要求用户能拖动大小的
dominic2003 2003-12-18
  • 打赏
  • 举报
回复
这个问题号解决,先f.seResizable(true);改变后在f.seResizable(false);不就得了
007remember 2003-12-18
  • 打赏
  • 举报
回复
事实就是如此
no reason

please write a programme to prove it
terrorist 2003-12-18
  • 打赏
  • 举报
回复
? f.seResizable(false);之后就不能改变大小了
wobelisk 2003-12-18
  • 打赏
  • 举报
回复
give me a reason?
007remember 2003-12-18
  • 打赏
  • 举报
回复
调用JFrame 中的setResizable()
例如:
JFrame f = new JFrame("Fixed size");
f.seResizable(false);
此时窗体最大化按钮不显示或无效
通过程序代码仍然可以改变大小,此限制只是用于用户。
tiger_wkh52741 2003-12-18
  • 打赏
  • 举报
回复
先f.seResizable(false);
之后根据用户触发的事件判断变化seResizable(false);or seResizable(true);
就OK了!
wanderhouser 2003-12-18
  • 打赏
  • 举报
回复
studying

62,635

社区成员

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

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