2015-11-09 68 views
0

我想在此GUI的较低区域添加一个JButtonpanButton),但我不知道要添加哪个元素。我试图用几个元素做panButton.add(element),但没有任何工作。如何在JPanel中添加JButton?

我不明白面板的主要元素是什么。 这是GUI的显示方式: enter image description here 虽然这是代码:

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区域下。

任何人都可以帮助我吗?

回答

1

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);

0

它添加了“Stato”区域最后,我创建了一个新的JPanel我在那里添加了按钮。