繁体   English   中英

如何在JPanel中添加JButton?

[英]How add a JButton in a JPanel?

我想在此GUI的下部添加一个JButtonpanButton ),但是我不知道我必须将其添加到哪个元素中。 我试图用几个元素来做panButton.add(element) ,但是没有用。

我不明白面板的主要内容是什么。 GUI的显示方式如下: 在此处输入图片说明 这是代码:

    private void buildGUI() {
    setTitle("Avanzamento upload");
    setIconImage(Toolkit.getDefaultToolkit().getImage(ClientUpload.class.getResource("/clientupload/resources/logoRFI.gif")));

    addWindowListener(new java.awt.event.WindowAdapter() {
        @Override
        public void windowClosing(java.awt.event.WindowEvent evt) {
            formWindowClosing(evt);
        }
    });

    JLabel lblProgressAll = new JLabel("Totale: ");
    JLabel lblProgressCurrent = new JLabel("File attuale: ");
    JLabel lblTotalBytes = new JLabel("MB totali: ");
    JLabel lblCopiedBytes = new JLabel("MB copiati: ");
    lblTotalBytesValue = new JLabel("0 MB");
    lblCopiedBytesValue = new JLabel("0 MB");

    progressButton = new JButton("Interrompi"); //fc

    progressAll = new JProgressBar(0, 100);
    progressAll.setStringPainted(true);
    progressCurrent = new JProgressBar(0, 100);
    progressCurrent.setStringPainted(true);
    txtDetails = new JTextArea(5, 50);
    txtDetails.setEditable(false);
    DefaultCaret caret = (DefaultCaret) txtDetails.getCaret();
    caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
    JScrollPane scrollPane = new JScrollPane(txtDetails, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

    JPanel contentPane = (JPanel) getContentPane();
    contentPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));

    JPanel panProgressLabels = new JPanel(new BorderLayout(0, 5));
    JPanel panProgressBars = new JPanel(new BorderLayout(0, 5));
    JPanel panCopyLabels = new JPanel(new BorderLayout(0, 5));
    JPanel panCopyFields = new JPanel(new BorderLayout(0, 5));

    panProgressLabels.add(lblProgressAll, BorderLayout.NORTH);
    panProgressLabels.add(lblProgressCurrent, BorderLayout.CENTER);
    panCopyLabels.add(lblTotalBytes, BorderLayout.NORTH);
    panCopyLabels.add(lblCopiedBytes, BorderLayout.CENTER);
    panCopyFields.add(lblTotalBytesValue, BorderLayout.NORTH);
    panCopyFields.add(lblCopiedBytesValue, BorderLayout.CENTER);
    panProgressBars.add(progressAll, BorderLayout.NORTH);
    panProgressBars.add(progressCurrent, BorderLayout.CENTER);

    JPanel panProgress = new JPanel(new BorderLayout(0, 5));
    panProgress.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder("Avanzamento"), BorderFactory.createEmptyBorder(5, 5, 5, 5)));
    JPanel panCopy = new JPanel(new BorderLayout(0, 5));
    panCopy.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder("Stato"), BorderFactory.createEmptyBorder(5, 5, 5, 5)));
    JPanel panDetails = new JPanel(new BorderLayout());
    panDetails.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder("Dettagli"), BorderFactory.createEmptyBorder(5, 5, 5, 5)));
    //fc
    JPanel panButton = new JPanel(new BorderLayout());
    panButton.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder(" "), BorderFactory.createEmptyBorder(5, 5, 5, 5)));

    panProgress.add(panProgressLabels, BorderLayout.LINE_START);
    panProgress.add(panProgressBars, BorderLayout.CENTER);
    panCopy.add(panCopyLabels, BorderLayout.LINE_START);
    panCopy.add(panCopyFields, BorderLayout.CENTER);
    panDetails.add(scrollPane, BorderLayout.CENTER);

    JPanel panUpper = new JPanel(new BorderLayout());
    panUpper.add(panProgress, BorderLayout.NORTH);
    panUpper.add(panCopy, BorderLayout.SOUTH);

    contentPane.add(panUpper, BorderLayout.NORTH);
    contentPane.add(panDetails, BorderLayout.CENTER);

    pack();
    setLocationRelativeTo(null);
}

我希望它显示在右侧的Stato区域或Dettagli区域的下方。

谁能帮我?

panButton是一个永远不会添加到GUI的JPanel ,因此,如果您向其中添加某些内容,它也不会添加到可见的GUI中。

您需要将按钮添加到按钮面板并将按钮面板添加到contentPane

JPanel panButton = new JPanel(new BorderLayout());
panButton.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder(" "), BorderFactory.createEmptyBorder(5, 5, 5, 5)));
panButton.add(element);  //Add button to panel
...
contentPane.add(panUpper, BorderLayout.NORTH);
contentPane.add(panDetails, BorderLayout.CENTER);
contentPane.add(panButton, BorderLayout.CENTER);  //Add panel to contentPane (which I assume is added to the frame at some point as I can see it's elements on the UI you posted)

或仅通过panCopy.add(element);将其添加到“状态”区域中panCopy.add(element);

最后,我创建了一个新的JPanel,并在此添加了按钮。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM