调用Java方法,但元素不在GUI中显示

时间:2014-06-25 15:15:44

标签: java button user-interface

我有以下Java方法,我试图用它来向GUI添加一些按钮:

private void addButtons(){
    JButton addBtn = new JButton("Add");
    JButton saveBtn = new JButton("Save");

    addBtn.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
            /*Code to be added here */
        }
    });
    addBtn.setBounds(1150, 135, 30, 15);

    saveBtn.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
            /*Code to be added here */
        }
    });
    saveBtn.setBounds(1190, 135, 30, 15);
System.out.println("'addButtons()' method is being called");
}

我从同一个类中的private void initialize()方法调用此方法。我知道正在调用initialize(),因为它执行的所有其他方法调用都在进行,并在GUI中显示。

但是,出于某种原因,我尝试使用此方法创建并添加到GUI的按钮未显示...

任何人都可以向我指出为什么会这样,以及我做错了什么?

修改

道歉 - 我在同一个班级的private void initialize()方法中调用该方法:

private void initialize(){
    ...
    (other code that is successfully adding stuff to the GUI)
    ...
    addButtons();
}

当我点击调用System.out.println()方法的按钮...以及所有其他代码时,我在控制台中看到addButtons()方法末尾的initialize()消息来自`initialize()'正在调用方法(例如,它打开一个新窗口,并向窗口添加一些文本,文本框和表格)...

编辑26/06/2014 @ 09:15

我编写此代码的类扩展了JPanel

public class JConfigurationPane extends JPanel implements UndoableEditListener, ChangeListener

我现在不再使用我之前提到的addButtons()方法,而是尝试使用我的initialize()方法将按钮添加到JPanel:

public void initialize(){
    // Code that initialises other elements in the GUI, such as Jlabels, layout, etc

    JButton addBtn = new JButton("Add");
    JButton saveBtn = new JButton("Save");

    this.add(addBtn);
    this.add(saveBtn);
}

但是当我运行应用程序时,按钮仍然没有出现,即使initialize()方法中的所有其他图形元素都有... ...任何想法为什么会这样?我在创建按钮之前和之后添加了一些调试,并且我将它们添加到GUI中 - 调试显示在控制台中,因此必须调用创建和添加按钮的代码... < / p>

2 个答案:

答案 0 :(得分:2)

您将这些按钮添加到表单的哪个位置?

您正在方法yes中创建按钮,并将侦听器附加到这些按钮,但按钮本身未添加到表单中,这就是您无法看到它们的原因。

例如你应该做的事情:

yourForm.add(addBtn);
yourForm.add(saveBtn);

或将这些添加到JPanel或其他东西 - 最后确保添加此JPanel

答案 1 :(得分:-1)

我设法通过将代码从我的addButtons()方法移动到我的initialize()方法并在创建后立即设置每个按钮的边界来解决此问题:

JButton addBtn = new JButton("Add");
addBtn.setBounds(1000, 135, 75, 25);
相关问题