swing 的问题

beexk 2007-01-15 11:27:03
当我改变JFrame的大小的时候.怎样才能使它里面的组件大小不变啊?
...全文
482 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
journeydj 2007-01-26
  • 打赏
  • 举报
回复
呵呵 把窗体大小固定就可以了呗
bradwoo8621 2007-01-23
  • 打赏
  • 举报
回复
一般用Swing做界面几种方式

GridBagLayout, 最复杂的方式, 组件随面板而动, 适合有Table, Tree, TextArea等等大组件存在的面板. 因为放大也不会影响效果, 而且看到的东西更多.
BorderLayout, 这个简单.
null, 没有Layout, 就是XY定位了, 大家都明白吧.

如果不是特殊的需求, 用这3中绝对满足.
scansoft 2007-01-18
  • 打赏
  • 举报
回复
同意楼上的
yemingxin2008 2007-01-17
  • 打赏
  • 举报
回复
如果在BorderLayout布局中固定jButton大小,
1.先在new JPanel,设布局panel.setLayout(flowLayout1);
并设置JPanel.setPreferredSize(new Dimension(200, 70));
2.再设置new jButton,jButton.setPreferredSize(new Dimension(200, 50));
然后把jButton入到JPanel中,panel.add(jButton),
再把JPanel放到BorderLayout布局中的某个方向.
例子:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class rew extends JFrame {

/**
* Launch the application
* @param args
*/
public static void main(String args[]) {
try {
rew frame = new rew();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* Create the frame
*/
public rew() {
super();
getContentPane().setLayout(new BorderLayout());
setBounds(100, 100, 500, 375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

final JButton button = new JButton();
button.setText("New JButton");
getContentPane().add(button, BorderLayout.WEST);

final JButton button_1 = new JButton();
button_1.setText("New JButton");
getContentPane().add(button_1, BorderLayout.NORTH);

final JPanel panel = new JPanel();
panel.setBackground(new Color(255, 0, 255));
panel.setPreferredSize(new Dimension(180, 50));
panel.setLayout(new FlowLayout());
getContentPane().add(panel, BorderLayout.EAST);

final JButton button_2 = new JButton();
button_2.setText("New JButton");
panel.add(button_2);

final JButton button_1_1 = new JButton();
button_1_1.setText("New JButton");
panel.add(button_1_1);
//
}

}

malongfei 2007-01-16
  • 打赏
  • 举报
回复
不使用布局管理器,自定义大小和位置,不过这样肯定也有不好的一方面了
lnxjx 2007-01-16
  • 打赏
  • 举报
回复
我也有相同疑问,不过我想窗体改变时,组件也同时改变,处于一个相对于窗体的位置上
beexk 2007-01-16
  • 打赏
  • 举报
回复
lastsweetop() ,我按你的方法做了。但是我拖动窗口,改变窗口大小的时候,那些组件的位置都还是会改变啊..能给个具体的例子吗?谢谢
吴冬冬 2007-01-16
  • 打赏
  • 举报
回复
多建几个面板
面板是放组件

窗口用borderLayout
面板里用flowLayout
yemingxin2008 2007-01-16
  • 打赏
  • 举报
回复
用流式布局
johnsena 2007-01-16
  • 打赏
  • 举报
回复
我刚注册这个论坛,不知道怎么发帖子,所以只有把我的问题发到这个老兄的帖子里面!请大家帮我看看我这个java applet程序(小球做自由反弹运动)能不能运行(不好意思,我的机子里面没有jdk),如果不对,错误在那里,谢谢大家!

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.*;
public class p extends JApplet implements Runnable
{
int x,y;
Thread b=null;
public void init()
{
Container cp=getContentPane();
x=70;
y=0;
}
public void start()
{
b= new Thread(this);
b.start();
}
public void run()
{
int dm=10,dn=10;
while(true)
{
if(x<=0)
{
x=10;
dn=10;
}

if(x>=240)
{
x=240;
dn=-10;
}
if(y<=0)
{
y=10;
dm=10;
}
if(y>=140)
{
y=140;
dm=-10;
}

x+=dn;
y+=dm ;
repaint();
try{b.sleep(150);}
catch(InterruptedException e){}
}
}
public void paint(Graphics g)
{
g.setColor(Color.green);
g.fillRoundRect(0,0,250,250,10,10);
g.SetColor(Color.red);
g.fillOval(x,y,10,10);
g.drawString("小球自由反弹运动",70,170);
}
}
<applet code="p.class" width=300 height=240></applet>

62,623

社区成员

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

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