为什么这样设置大小不起作用

butnet 2006-10-29 08:29:30
import javax.swing.*;
public class test extends JApplet
{
JButton button=new JButton("测试");
public void init()
{
button.setSize(60,60);
getContentPane().add(button);
}
}
...全文
319 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
butnet 2006-11-01
  • 打赏
  • 举报
回复
自己再顶一顶
混沌骑士 2006-10-31
  • 打赏
  • 举报
回复
button.setPreferredSize(new Dimension(80, 30));
butnet 2006-10-31
  • 打赏
  • 举报
回复
我知道设为空之后可以设置大小!
但是那样,我就必须自己去自己它们每一个组件的位置...
我不想要这样的结果!
我想要布局管理器来布局,然后自己可能修改它里面组件的大小!!!
butnet 2006-10-31
  • 打赏
  • 举报
回复
哪位给看看噻!
郁闷得很啊!
butnet 2006-10-31
  • 打赏
  • 举报
回复
/**
*这个是我的程序.要的就是要这样的功能:
*用布局管理器布局,然后自己设置大小!因为如果不设置大小不一的话,当用户比较少的时候,按钮
*就会变很大!所以想设置按钮的大小!
*谢谢!
*/
package mychat.client.windows;

import mychat.client.main.ClientMain;
import mychat.data.*;

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
//import java.util.Date;

public class WinUser extends JFrame implements ActionListener,ComponentListener
{
ClientMain main;
JButton user_b;
int usernum=0;
JScrollPane sp;
JPanel userPanel;
GridLayout layout;
int width;
public WinUser()
{
super("MyChat - v 1.0");
layout=new GridLayout(1,1);
userPanel=new JPanel(layout);
sp=new JScrollPane(userPanel);
}
public WinUser(ClientMain main)
{
super("MyChat - v 1.0");
layout=new GridLayout();
userPanel=new JPanel(layout);
sp=new JScrollPane(userPanel);
this.main=main;
}
public void init()
{
width=getWidth();
setSize(200,550);
addWindowListener(new closewindow());
addComponentListener(this);
getContentPane().add(sp);
//setResizable(false);
setVisible(true);
}
/**
*添加用户
*@param u 为系统发来的ChatData数据包
*/
public void addUser(ChatData u)
{
System.out.println("添加用户");
layout.setRows(++usernum);
userPanel.setLayout(layout);
user_b=new JButton(u.getSender().getName()+" "+u.getText());
user_b.setSize(getWidth()-12,30);
user_b.addActionListener(this);
user_b.setPreferredSize(new Dimension(80, 30));
userPanel.add(user_b);
repaint();
System.out.println("添加用户完毕");
}
/**
*删除用户
*@param u 为系统发来的ChatData数据包
*/
public void delUser(ChatData u)
{}
/**
*添加聊天信息
*@param u 为系统发来的ChatData数据包
*/
public void addChatText(ChatData u)
{}
//main()
public static void main(String args[])
{
new WinUser().init();
}
/**
*重载paint方法
*/
public void paint(Graphics g)
{
layout.setRows(usernum);
Component[] cs=userPanel.getComponents();
for(int i=0;i<cs.length;i++)
cs[i].setSize(getWidth()-12,30);
userPanel.setLayout(layout);
sp.setViewportView(userPanel);
/*
//或者是
sp=new JScrollPane(userPanel);
*/
super.paint(g);
}
//listener
public void actionPerformed(ActionEvent e)
{
System.out.println(e.getActionCommand());
}
class closewindow extends WindowAdapter
{
public void windowClosing (WindowEvent e)
{
System.exit(0);
}
}
public void componentResized(ComponentEvent e)
{
width=getWidth();
System.out.println(width);
repaint();
}
public void componentShown(ComponentEvent e)
{repaint();}
public void componentMoved(ComponentEvent e)
{repaint();}
public void componentHidden(ComponentEvent e)
{repaint();}
}
Onelee 2006-10-30
  • 打赏
  • 举报
回复
把内容面板的布局管理器改为NULL试试,
然后 button 好象有个 setBound(x, y, width, height)
butnet 2006-10-30
  • 打赏
  • 举报
回复
不行啊!没有布局管理器.
你加个JScrollPane都没有用了!
而且还有很多东东,写了也不起作用...
我就是想用布局管理器还布局,然后自己可能修改它的大小!!!
可不可以!
rodgerfu 2006-10-30
  • 打赏
  • 举报
回复
先setLayOut(null);
然后再设置组件大小应该就可以了
butnet 2006-10-30
  • 打赏
  • 举报
回复
setBorder(x,y,width,height)好像没有这个方法吧!
即使有和我的要求也不一样!我不想自己去设置位置,只想自己设置大小!!!!
应该怎么办!
beuuld 2006-10-30
  • 打赏
  • 举报
回复
This is because your layout.
You can try button.setBorder(x, y, width, height)
buan 2006-10-29
  • 打赏
  • 举报
回复
默认是FlowLayout布局
jayfantsy 2006-10-29
  • 打赏
  • 举报
回复
你的布局不确定,窗口大小也不确定,组件大小是一致的..
butnet 2006-10-29
  • 打赏
  • 举报
回复
那如果想自己设置组件大小又想要用布局管理器!应该怎么弄呢?
syhan 2006-10-29
  • 打赏
  • 举报
回复
好像还与布局有关

62,616

社区成员

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

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