请教各位,怎样改变awt.Choice的弹出菜单(单击右边的箭头所弹出的组件)的高度。

解决方案 »

  1.   

    这个问题很急,希望熟悉applet的朋友帮帮忙。
      

  2.   

    为什么不用JComboBox?现在applet可以使用Swing。
      

  3.   

    限于某些原因,必须用awt的。这个问题我实在是解决不了了,希望各位高手帮忙解决,谢谢!
      

  4.   

    你说的高度是指其中每个item的高度吗?
      

  5.   

    不是,我的高度是指Choice弹出菜单的整个高度。
    我的目标是:无论Choice中有多少Item,弹出菜单都不会有垂直滚动条,
    换句话说,就是要根据Item数来调整菜单的高度,但是关键是怎么调整弹出菜单的高度。谢谢!很着急,希望熟悉的尽快回复,拜托。
      

  6.   

    没办法。我看了choice的代码,其本身没有一行关于自身样式形状等的代码。AWT可能使用Toolkit来创建Choice的实例。我的choice总是保持8个item的高度,从choice的方法和属性上没有任何办法可以设置同时显示的item的个数。创建一个Choice的子类,覆盖paint方法,发现传递进来的Graphics的bounds仅仅是文本框的大小,根本不包括List的大小。除非自己作,TextField + Button + List
      

  7.   

    谢谢UnAgain()的回复,我的调查结果也差不多。
    awt的外观与运行平台有关,应该说平台的差异是造成Choice弹出菜单高度不同的原因。
    并且在IE下修改Choice弹出菜单的高度几乎是不可能的。不过,我很想知道TextField+Button+List怎样自定义一个全新的组件,不妨叫NChoice.
    要求NChoice具有Choice所具有的所有功能,但是能随意设置其弹出菜单的高度,请教怎么实现?
      

  8.   

    我对AWT不熟,只是提个设想。1.把TextField和一个Buttong并列排在一起
    2.管理一个Vector,用来存放add(String s)中的s。
    3.监听TextField的鼠标事件,Button的click事件,以便弹出List。
    4.List是关键,首先,它通过上述的Vector创建;其次,平时是隐藏的,只在点击Field或Button时才弹出。好像通过setBounds()或者setSize()、setWidth()、setHeight()等函数可以改变List的大小,这样就可以保证高度可调。我觉得这里面的疑点是List的显示问题,我不知道它能不能在别的部件上显示。不过好像问题也不大,使用validate()可能会解决。如果这个问题解决了,剩下的就是3个部件的布局问题了,不难,挺麻烦。
      

  9.   

    但是要真正把功能实现并做到运行时没有bug,应该不是一件简单的事情,就目前我的水平来说,时间根本来不及;即使来的及,做出来的质量也不能保证。