带有JComboBox的JTextField无法正常工作

时间:2016-07-11 12:56:39

标签: java swing jtextfield jcombobox

当用户在JTextField列表中选择“额外”时,我希望显示JComboBox,否则会隐藏。但是当用户选择“额外”时,JTextField不会出现,但是如果我缩小窗口并再次放大它就会出现。在这样做之后它正常工作,只是第一次它没有出现。为什么它表现得那样?对此有何解决方案?

这是我的代码:

getCmbJtocsv_C_8().addActionListener(new ActionListener() { 
   public void actionPerformed(ActionEvent e) {
   {

      input3 = (String)adaptor.getCmbJtocsv_C_8().getSelectedItem();
      adaptor.getTxtJtocsv_C_8().setVisible(false);

      if(input3.equals("extra")){
          adaptor.getTxtJtocsv_C_8().setVisible(true);
      }
}

我已经改变了字符串比较,我仍然得到相同的结果。

1 个答案:

答案 0 :(得分:1)

默认情况下,Swing组件的大小为(0,0)。当框架打包或可见时,组件的大小/位置由布局管理器确定。

所以我猜想,因为你从文本字段开始不可见,其父面板的大小不包括文本字段。调整框架大小时,将显示文本字段,因为其大小和面板大小已重新计算。

现在已经计算了文本字段的大小,因此您可以根据需要切换可见性。

如果这没有帮助,则发布一个显示问题的SSCCE。这是创建一个框架,只有一个组合框和文本字段来演示问题。将来所有问题都应包含SSCCE,因为我们无法根据几行代码猜测应用程序的上下文。