当用户在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);
}
}
我已经改变了字符串比较,我仍然得到相同的结果。
答案 0 :(得分:1)
默认情况下,Swing组件的大小为(0,0)。当框架打包或可见时,组件的大小/位置由布局管理器确定。
所以我猜想,因为你从文本字段开始不可见,其父面板的大小不包括文本字段。调整框架大小时,将显示文本字段,因为其大小和面板大小已重新计算。
现在已经计算了文本字段的大小,因此您可以根据需要切换可见性。
如果这没有帮助,则发布一个显示问题的SSCCE。这是创建一个框架,只有一个组合框和文本字段来演示问题。将来所有问题都应包含SSCCE,因为我们无法根据几行代码猜测应用程序的上下文。