首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在小程序中添加组件

在小程序中添加组件
EN

Stack Overflow用户
提问于 2011-07-13 03:19:18
回答 5查看 4.9K关注 0票数 0

我正在制作一个小程序,作为我的小程序的一部分,我希望发生这样的事情:当用户按下"OK“时,旧的组件(一些单选按钮)将被删除,并添加一个新的JPanel,其中包含一堆文本字段。

但是,我不知道如何在applet启动后向其添加新组件。为了简化问题,我忽略了删除部分(我知道怎么做),只添加了一个简单的JLabel,但即使这样也不会添加!

到目前为止,我的代码如下:

代码语言:javascript
复制
// imports omitted

public class Class extends Applet implements ActionListener 
{
  Button okButton;  
  CheckboxGroup radioGroup; 
  Checkbox radio1; 
  Checkbox radio2; 
  Checkbox radio3;
  JLabel j;

  public void init()  
  { 
    setLayout(new FlowLayout()); 
    okButton = new Button("OK"); 
    j = new JLabel("hello");
    radioGroup = new CheckboxGroup(); 
    radio1 = new Checkbox("Red", radioGroup,false); 
    radio2 = new Checkbox("Blue", radioGroup,true); 
    radio3 = new Checkbox("Green", radioGroup,false); 
    add(okButton); 
    add(radio1); 
    add(radio2); 
    add(radio3);
    okButton.addActionListener(this); 
  }

  public void repaint(Graphics g) 
  { 
    if (radio1.getState()) add(j); 
  }

  public void actionPerformed(ActionEvent evt)  
  { 
    if (evt.getSource() == okButton) repaint();
  } 
}

我做错了什么?

EN

回答 5

Stack Overflow用户

发布于 2011-07-13 03:25:14

您不应该覆盖repaint方法,当然也不应该在此方法中添加组件。只需从小程序中删除单选按钮(使用其remove方法),并将标签添加到actionPerformed方法中的小程序中,与在init方法中添加它们的方式相同。

之后,您可能需要调用validate

票数 2
EN

Stack Overflow用户

发布于 2011-07-13 03:22:06

添加组件,然后调用容器的validate()。在本例中为yourApplet.validate()。这将触发所有元素的重新绘制和重新排列。

票数 0
EN

Stack Overflow用户

发布于 2011-07-13 12:39:33

你可以像那样做

代码语言:javascript
复制
JFrame fr= new JFrame();                    // global variables
JPanel panelToBeAdded = new JPanel();
JPanel initialPanel = new JPanel();
JTextField fieldToBeAdded = new JTextField(); 
panelToBeAdded.setPreferredSize( new Dimension(400,400));
initialPanel.setPreferredSize( new Dimension(400,400));
initialPanel.setVisible(true);
fr.add(initialPanel);
fr.setVisible(true);
fr.pack();


public void actionPerformed(ActionEvent ae) {
    initialPanel.setVisible(false);
    //radiobuttons.setVisible(false);---> hide the radio buttons
    panelToBeAddedd.add(fieldToBeAddedd);
    panelToBeAddedd.setVisible(true);
    fr.add(panelToBeAddedd);

}

public void repaint( Graphics g ) {
  // do something
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6669802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档