当前位置: 代码迷 >> Java相关 >> [求助]关于容器大小的
  详细解决方案

[求助]关于容器大小的

热度:301   发布时间:2007-03-11 04:30:10.0
[求助]关于容器大小的
我现在正在写一个Bean,JPanel a,b。a包含b(都一样)要求是需要先A不显示,在B触发UI后显示A
现在问题就来了,我在使用BDK测试的时候,始终都要拖动几下才能正常显示,请教有没什么办法解决这个显示的问题
现在试过的方法有:调用setSize,setBounds等
在这先谢过了
搜索更多相关的解决方案: 容器  

----------------解决方案--------------------------------------------------------

不理解!!


----------------解决方案--------------------------------------------------------
以下是引用tiancaion3在2007-3-11 4:30:10的发言:
我现在正在写一个Bean,JPanel a,b。a包含b(都一样)要求是需要先A不显示,在B触发UI后显示A
现在问题就来了,我在使用BDK测试的时候,始终都要拖动几下才能正常显示,请教有没什么办法解决这个显示的问题
现在试过的方法有:调用setSize,setBounds等
在这先谢过了

BDK是什么?不是用JDK吗?难道不是SUN的官方开发环境,如果用JDK的话,可以调用以下方法,使其强制更新组件树

SwingUtilities.updateComponentTreeUI(this)

this指的是当前窗口类的最高级别的引用,比如JFrame的引用
----------------解决方案--------------------------------------------------------

不好意思,是我打错了,是DBK,图标是一个企鹅的形状的,是一个专门测试Bean的玩意,好象这东西就是sun以前自己搞的,不过现在由于在推NetBeans,所以就没出新版本,一直在NetBeans上做了


----------------解决方案--------------------------------------------------------
还是不行,难道是DBK的问题?
----------------解决方案--------------------------------------------------------
把代码弄上来看看
----------------解决方案--------------------------------------------------------

package temp;

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

public class PassAddBean extends JPanel implements ActionListener,PassEventListener
{
JLabel bel_PassengerNumber,bel_name,bel_address,bel_phone;
JTextField Tfield_PassengerNumber,Tfield_name,Tfield_address,Tfield_phone;
JButton but_PassengerSubmit;
JPanel panl_massage;

JLabel bel_date,bel_place,bel_number,bel_tiete;
JTextField Tfield_place,Tfield_number;
JFormattedTextField formaTfile;
GridBagConstraints gbc;
JButton but_submit;

String[] st_message = {"","",""};
int i_temp,i_counter;

public PassAddBean()
{
i_counter = 2;
//this.setSize(800,300);

panl_massage = new JPanel();

bel_PassengerNumber = new JLabel("Passenger Number:");
bel_name = new JLabel("Passenger Name:");
bel_address = new JLabel("Passenger Address:");
bel_phone = new JLabel("Passenger Phone:");

Tfield_PassengerNumber = new JTextField(15);
Tfield_PassengerNumber.setEditable(false);
Tfield_name = new JTextField(15);
Tfield_address = new JTextField(15);
Tfield_phone = new JTextField(15);
but_PassengerSubmit = new JButton("Submit");
but_PassengerSubmit.setPreferredSize(new Dimension(350, 23));

panl_massage.setLayout(new java.awt.GridLayout(5,2));
panl_massage.add(bel_PassengerNumber);panl_massage.add(Tfield_PassengerNumber);
panl_massage.add(bel_name);panl_massage.add(Tfield_name);
panl_massage.add(bel_address);panl_massage.add(Tfield_address);
panl_massage.add(bel_phone);panl_massage.add(Tfield_phone);
panl_massage.add(but_PassengerSubmit);

bel_date = new JLabel("Enter Date of Travel:");
bel_place = new JLabel("Enter Place of Travel:");
bel_number = new JLabel("Enter Number of seats to be booled:");
bel_tiete = new JLabel("Fly My Way AirLines");
bel_tiete.setFont(new Font("宋体", 0, 24));

//JFormattedTextField的使用翻API
formaTfile = new JFormattedTextField();
formaTfile.setPreferredSize(new Dimension(250, 23));
formaTfile.setValue(new Date());
Tfield_place = new JTextField(18);
Tfield_number = new JTextField(7);
but_submit = new JButton("BOOK SEATS");

setLayout(new java.awt.GridBagLayout());

GridBagConstraints gbc=new GridBagConstraints();
gbc.anchor=GridBagConstraints.WEST;

diy_add(1,0,bel_tiete,gbc);
diy_add(0,1,bel_date,gbc);diy_add(3,1,formaTfile,gbc);
diy_add(0,2,bel_place,gbc);diy_add(3,2,Tfield_place,gbc);
diy_add(0,3,bel_number,gbc);diy_add(3,3,Tfield_number,gbc);
diy_add(1,4,but_submit,gbc);

gbc.gridx=0;
gbc.gridy=8;
gbc.gridwidth=4;
add(panl_massage,gbc);

but_PassengerSubmit.addActionListener(this);
but_submit.addActionListener(this);
panl_massage.setVisible(false);
}
//因为不固定是那个Component所以得传GridBagConstraints进去,
//Component是传递进去对象的上限,再往上就认不到了...
void diy_add(int x,int y,JComponent c,GridBagConstraints gbc)
{
gbc.gridx=x;
gbc.gridy=y;
add(c,gbc);
}
public void actionPerformed(ActionEvent evt)
{
Object obj=evt.getSource();
if(obj==but_PassengerSubmit)
{
if (i_counter<=i_temp)
{
Tfield_PassengerNumber.setText(st_message[0]+st_message[1]+i_counter);
Tfield_name.setText("");
Tfield_address.setText("");
Tfield_phone.setText("");
i_counter++;
return;
}
else
{
String st_temp = "Number Passenger Added:"+(i_counter-1);
JOptionPane.showMessageDialog(null,st_temp);
panl_massage.setVisible(false);
but_submit.setEnabled(true);
firePassAddEvent();
}
}
if(obj==but_submit)
{
st_message[0] = formaTfile.getText();
st_message[1] = Tfield_place.getText();
st_message[2] = Tfield_number.getText();
if (st_message[1].equals("") || st_message[2].equals(""))
JOptionPane.showMessageDialog(null,"请输入你的信息");
else
{
try{
i_temp = Integer.parseInt(st_message[2]);
}
catch(NumberFormatException e)
{
JOptionPane.showMessageDialog(null,"请不要在票数眶里面输入非数字");
return;
}
if (i_temp == 0)
{
JOptionPane.showMessageDialog(null,"无效的定票数量");
return;
}
panl_massage.setVisible(true);
Tfield_PassengerNumber.setText(st_message[0]+st_message[1]+1);
but_submit.setEnabled(false);
this.setSize(800,300);
SwingUtilities.updateComponentTreeUI(this);
//this.repaint();
}
}
}
PassEventListener PelObj;

public void addPassEventListener(PassEventListener Pel)
{
PelObj=Pel;
}

public void firePassAddEvent()
{
}

public void Pass(PassAddEvent evt)
{
}
/*public static void main(String args[])
{
JFrame f= new JFrame("");
PassAddBean p= new PassAddBean();
f.getContentPane().add(p);
f.setSize(710,300);
f.setVisible(true);
}*/
}


[此贴子已经被作者于2007-3-11 13:34:32编辑过]


----------------解决方案--------------------------------------------------------
我这里运行很正常啊,反应也挺快的
----------------解决方案--------------------------------------------------------

那可能就是BDK的问题吧,因为我们学校现在测试打分是用那个在做


----------------解决方案--------------------------------------------------------
  相关解决方案