2015-11-09 63 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我在那裏添加了按鈕。