2014-03-14 60 views
1

我正在使用NetBeans设计Jframe。我没有几个问题。有关设计JFrame的建议

  1. 我们能在所需位置创建一个字段的标签(例如,我们有一个字段中指定的高度,我需要显示它下面的标签表明高度厘米)条件?
  2. 我们可以禁用基于条件的场?(通过禁用我的意思是不应该在我的框架被显示)

有人建议我,我们是否可以通过一些例子实现这些目标。

想这一点,一些有用的建议

private void englishRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {             
     // TODO add your handling code here: 
     JLabel userlabel; 
     if (englishRadioButton.isSelected()) 
       { 
        userlabel = new JLabel("Inches"); 
        userlabel.setBounds(311, 59, 64, 36); 
        //userlabel.setLocation(307,55); 
        //userlabel.setSize(70,40); 
        userlabel.setForeground(Color.green); 
        userlabel.setText("Inches"); 
        userlabel.setVisible(true); 
        System.out.println(englishRadioButton.getBounds()); 
        inchesTextField.setVisible(true); 
       } 
    }   

的文本框是可见后,只有当我点击英语单选按钮,在同一时间,我需要得到一个标签,但它不是与上面的代码显示。我可以知道我要去哪里吗?

请参阅所附截图When English button is clicked, I need a label beneath the second textfield as inchesWhen Metric button is clicked,I am disabling the above text field

当点击按钮的英语,我需要一个标签第二文本框的下方为英寸,我将显示公制当我禁用文本字段。我能够实现后者,但不是前者

谢谢!

回答

4
  1. 是的,使用布局管理器可以轻松实现组件的相对放置。
  2. 是的,所有组件都有一个setEnabled(...)和一个setVisible(...)方法,可以在程序运行期间的任何时候调用它们。前者可以帮助您激活/禁用组件,后者有助于使组件可见/不可见。如果您想交换完整的“视图”,请使用CardLayout。

关于:

可有人建议我,我们是否可以通过一些例子实现这些目标。

请您首先强烈地相信,这里的努力责任应该是你的,提问者的,因为你是问问题的人,而最需要学习的人应该尽可能可能。让我们看看你的尝试,我们可以帮助你。否则,最好的例子可以在Swing教程中找到。

有关链接,请看这里:Swing Tag Info


编辑
你问:

我尝试了上面贴的代码,有条件地禁用文本字段的效果很好,但得到的标签不起作用。你能否就此提出建议?

我没有看到您将JLabel添加到任何组件。如果要在事件上创建组件,则必须将其添加到其祖先层次结构最终到达可见的顶级组件(例如JFrame)的组件。然后,在将组件添加到容器(例如JFrame)之后,您必须在容器上调用revalidate()以让其布局管理器重新布置其组件,然后repaint()重新绘制任何“脏”像素。

我再次重申,您最好不要使用空布局和绝对定位,而是使用布局管理器和相对定位。如果你想要一个带有或不带有可见文本的标签,通常最好在GUI创建时向GUI添加一个空的JLabel,并且只要需要时设置它的文本,只要标签位于允许其文本缩小和展开的地方。

此外,对于您当前的问题,您可能希望展示您想要实现的目标以及获得的内容。或者,如果您还无法在此发布图片,请发布指向您创建的图片或图片的链接,然后我们会为您发布。

+0

我能够使用setVisible方法有条件地禁用字段。但是我无法有条件地向文本字段添加标签。尝试像这样创建了一个新的标签对象,并使用setLocation和setSize.But来设置它的位置和大小。但是当我运行我的应用程序时,我没有在框架的任何位置看到标签。我能否知道我在做什么错误? – Sandy

+0

@Sandy:最好避免通过setSize,setLocation或setBounds进行绝对定位。最好使用布局管理器来实现最佳相对位置,以便您的GUI在所有平台上都能正常工作。要获得更具体的帮助,请创建并发布[最小示例程序](http://stackoverflow.com/help/mcve)(请查看链接),然后向我发送评论以告诉我它已完成。 –

+0

我尝试了以上发布的代码,有条件地禁用文本字段效果很好,但获取标签不起作用。你能否就此提出建议? – Sandy