当前位置: 首页 > 知识库问答 >
问题:

没有将表添加到操作面板中

欧阳高昂
2023-03-14
package gestiune;
import java.awt.event.ActionEvent;
import javax.swing.*;
import java.awt.*;

public class Gestiune {
    static Gest gest;
    static Action actListaAng;    
    static JPanel panouPrinc;
    static ListaAngajati lang;
    static JMenuItem listaAng;
    static class Gest extends JFrame{
     public Gest(){                
            actListaAng = new ActListaAng("List");
            listaAng=new JMenuItem(actListaAng);
            panouPrinc = new JPanel();
            panouPrinc.setBackground(Color.white);
            Container cp = getContentPane();            
            cp.add(panouPrinc);
            pack();
            setTitle("Some title");
            setSize(1000,700);
            setLocation(0,0);
            setVisible(true);            
            setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        }
    }        

    public static void main(String[] args) {
        gest = new Gest();
    }

    //class for listing action
    static class ActListaAng extends AbstractAction {

        public ActListaAng(String text){
            super(text);
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            lang = new ListaAngajati();
            panouPrinc.add(lang);
        }
    }
}

下面是表类:

package gestiune;
import javax.swing.*;
import java.awt.*;

public class ListaAngajati extends JPanel {
    JTable tabel;
    JScrollPane panouScroll;
    public ListaAngajati() {
        panouScroll = new JScrollPane(tabel);
        String[] numeCol = {
        "Nume",
        "Prenume",
        "Categorie",
        "Data Adaugare",
        "Ultima Modificare"
    };

    Object[][] linii = {
        {"verban","adrian","sds","16-03-1989","acum"}
    };    
    tabel = new JTable(linii,numeCol);
    setLayout(new BorderLayout());
    add(tabel.getTableHeader(), BorderLayout.PAGE_START);
    add(panouScroll);
    add(tabel);

    }    

}

我尝试了几种方法,比如在ActionEvent上使用repaint,或者直接在table类中使用repaint.......如果我添加lang=new ListaAngajati();panouprinc.add(lang);直接进入主jframe构造函数工作,但从操作上它就不工作了,所以我有点没有选择了,所以有人能帮我一把吗?

共有1个答案

慕承恩
2023-03-14

如果您revalidate()repaint(),它可以工作。在运行时添加组件后,您应该始终revalidate()repaint()

@Override
public void actionPerformed(ActionEvent e){
    lang=new ListaAngajati();
    panouPrinc.add(lang);
    panouPrinc.revalidate();
    panouPrinc.repaint();
}

也没有按钮可以点击,所以我在这里添加了一个按钮,并添加了操作

Container cp=getContentPane(); 
JButton button = new JButton(new ActListaAng("Action"));
button.setText("Open");
cp.add(button, BorderLayout.PAGE_START);
cp.add(panouPrinc);
pack();

很好用。

 类似资料:
  • 我目前正在尝试对我的实现一个操作侦听器,以便在选择它时,它将打开一个供用户选择他们希望GUI使用的文件。对于初学者,我如何让控制台打印出“框单击!”当用户选中该框时? 它已经有一段时间,因为我已经在摇摆编程,所以任何建议都有帮助!

  • 我正在构建一个Java程序。该程序的核心在JFrame中可视化,其中包含一个JMenuBar和各种JMenuItem和JMenu。关键是我在所有框架中添加了一个centralPanel,但是如果我在centralPanel中添加了一些内容,那么只有在调整主框架的大小、缩小或放大它时,它才会显示出来!代码如下: 这是构造函数: 在这里,我添加了中央面板,在这里,在ActionListener中,我试

  • 我试图通过点击JButton将一张新卡添加到现有的JPanel(cardLayout)中,然后转到该新卡,但由于新卡未注册,我得到了空异常。 我试着在谷歌上搜索,但找不到和示例,我试着用 但什么都不管用,这是可能的吗?如果是的话,有人知道任何例子吗? 代码如下,jPanelSliding1。NextSlidePanel只需移动到CardLayout中选定的JPanel。此处创建的新面板由于找不到面

  • 问题内容: 如何将pdepend图表添加到Jenkins作业界面(在项目标题下)?实际上有可能这样做吗? 问题答案: 是的。Jenkins描述允许添加图像。 前段时间您可以使用,但是在添加XSS保护时将其删除,但是: 假设图表在下面,请在描述中粘贴以下两行: 通过使用相对路径,如果您重命名项目或移动服务器,则无需更改路径。

  • 问题内容: 我想向现有的Excel文件中添加工作表。我怎样才能做到这一点?我正在研究一个selenium项目,我想将所有自动化结果表添加到单个excel文件中。现在,我能够为每个工作表创建新的Excel文件。 问题答案: 如果从Java 使用: 分别打开现有工作表或创建新工作表: 要检查工作表是否存在以创建唯一的工作表名称,可以使用如下所示的内容: 然后您可以通过调用添加工作表: 在这种情况下,工

  • 问题内容: 我已经浏览了几乎所有以前的线程,但是仍然无法正常工作。我正在尝试向现有工作簿中添加新工作表。我的代码有效,但是它继续添加更多(实际上很多)工作表。我不知道解决方案。下面是我的代码 问题答案: 如果要向现有电子表格中添加工作表,只需继续并将新工作表添加到文件中,而不是复制对象并尝试向其中添加新工作表。