2015-05-28 5 views
0

У меня есть окно настроек с JScrollPane [smtpPanelList] в JTabbedPane [settingsTabs] - на вкладке 1. Тем не менее, я хочу добавить случайное число nr. настроек SMTP в smtpPanelList. Эти настройки сконструированы в отдельный JPanel [SmtpSettings].Динамически добавить один или несколько JPanels к JScrollPane - (Flow) проблемы компоновки

Я пробовал много разных решений, но ни один из них не работал. Проблема заключается в том, когда я добавляю их в JPanel [lista] - с FlowLayout - который находится внутри smtpPanelList, его добавленный, но отображаемый по горизонтали, а не под друг друга.

Просмотреть скриншот video.

Здесь следует коды:

settingsWindow.java

package code; 
import java.awt.FlowLayout; 
import java.util.ArrayList; 
import java.util.prefs.Preferences; 

public class settingsWindow extends javax.swing.JFrame { 
public static final String SETTINGS = "DLP.settings"; 
public static final String SETTINGSEMAILCONTENT = "emailContent"; 
public ArrayList<SmtpSettings> smtp_list = null; 
public int ID = -1; 
public SmtpSettings smtp_tmp = null; 

private Preferences prefs = null; 

public settingsWindow() { 
    initComponents(); 
    prefs = Preferences.userRoot().node(SETTINGS); 
    emailContent.setText(prefs.get(SETTINGSEMAILCONTENT, emailContent.getText())); 

    smtpPanelList.setLayout(null); 

    smtp_list = new ArrayList<SmtpSettings>(); 
    smtpPanelList.setViewportView(lista); 
    lista.setLayout(new FlowLayout(FlowLayout.TRAILING)); 

} 

@SuppressWarnings("unchecked") 
// <editor-fold defaultstate="collapsed" desc="Generated Code">       
private void initComponents() { 

    settingsTabs = new javax.swing.JTabbedPane(); 
    Tab1 = new javax.swing.JPanel(); 
    smtpSettingsHeader = new javax.swing.JPanel(); 
    jLabel1 = new javax.swing.JLabel(); 
    addNewSmtpAccount = new javax.swing.JButton(); 
    smtpPanelList = new javax.swing.JScrollPane(); 
    lista = new javax.swing.JPanel(); 
    Tab2 = new javax.swing.JPanel(); 
    emailContentSettingsPanel = new javax.swing.JLabel(); 
    jScrollPane1 = new javax.swing.JScrollPane(); 
    emailContent = new javax.swing.JTextArea(); 
    saveAndCloseButton = new javax.swing.JButton(); 
    saveButton = new javax.swing.JButton(); 
    closeButton = new javax.swing.JButton(); 

    setTitle("Your personal settings"); 
    setMaximumSize(new java.awt.Dimension(1900, 1900)); 
    setMinimumSize(new java.awt.Dimension(555, 500)); 
    setPreferredSize(new java.awt.Dimension(660, 500)); 

    jLabel1.setText("Your SMTP Accounts to send an email."); 

    addNewSmtpAccount.setText("Add new account"); 
    addNewSmtpAccount.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      addNewSmtpAccountActionPerformed(evt); 
     } 
    }); 

    javax.swing.GroupLayout smtpSettingsHeaderLayout = new javax.swing.GroupLayout(smtpSettingsHeader); 
    smtpSettingsHeader.setLayout(smtpSettingsHeaderLayout); 
    smtpSettingsHeaderLayout.setHorizontalGroup(
     smtpSettingsHeaderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, smtpSettingsHeaderLayout.createSequentialGroup() 
      .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 466, Short.MAX_VALUE) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
      .addComponent(addNewSmtpAccount, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addContainerGap()) 
    ); 
    smtpSettingsHeaderLayout.setVerticalGroup(
     smtpSettingsHeaderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(smtpSettingsHeaderLayout.createSequentialGroup() 
      .addGap(2, 2, 2) 
      .addGroup(smtpSettingsHeaderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
       .addComponent(addNewSmtpAccount) 
       .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) 
      .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
    ); 

    smtpPanelList.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); 
    smtpPanelList.setMaximumSize(new java.awt.Dimension(600, 32767)); 
    smtpPanelList.setMinimumSize(new java.awt.Dimension(600, 100)); 
    smtpPanelList.setPreferredSize(new java.awt.Dimension(600, 10000)); 
    smtpPanelList.setSize(new java.awt.Dimension(600, 100)); 

    lista.setMaximumSize(new java.awt.Dimension(617, 32544)); 
    lista.setMinimumSize(new java.awt.Dimension(600, 100)); 
    lista.setSize(new java.awt.Dimension(600, 100)); 
    smtpPanelList.setViewportView(lista); 

    javax.swing.GroupLayout Tab1Layout = new javax.swing.GroupLayout(Tab1); 
    Tab1.setLayout(Tab1Layout); 
    Tab1Layout.setHorizontalGroup(
     Tab1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(Tab1Layout.createSequentialGroup() 
      .addContainerGap() 
      .addComponent(smtpSettingsHeader, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
      .addContainerGap()) 
     .addComponent(smtpPanelList, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
    ); 
    Tab1Layout.setVerticalGroup(
     Tab1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(Tab1Layout.createSequentialGroup() 
      .addComponent(smtpSettingsHeader, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
      .addComponent(smtpPanelList, javax.swing.GroupLayout.DEFAULT_SIZE, 363, Short.MAX_VALUE)) 
    ); 

    settingsTabs.addTab("SMTP Accounts", Tab1); 

    emailContentSettingsPanel.setText("Text of the email to send."); 
    emailContentSettingsPanel.setToolTipText("Text of the email to send."); 

    emailContent.setColumns(20); 
    emailContent.setRows(5); 
    jScrollPane1.setViewportView(emailContent); 

    javax.swing.GroupLayout Tab2Layout = new javax.swing.GroupLayout(Tab2); 
    Tab2.setLayout(Tab2Layout); 
    Tab2Layout.setHorizontalGroup(
     Tab2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, Tab2Layout.createSequentialGroup() 
      .addContainerGap() 
      .addGroup(Tab2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) 
       .addComponent(jScrollPane1) 
       .addComponent(emailContentSettingsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 615, Short.MAX_VALUE)) 
      .addContainerGap()) 
    ); 
    Tab2Layout.setVerticalGroup(
     Tab2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(Tab2Layout.createSequentialGroup() 
      .addContainerGap() 
      .addComponent(emailContentSettingsPanel) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
      .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 372, Short.MAX_VALUE) 
      .addContainerGap()) 
    ); 

    settingsTabs.addTab("Email content", Tab2); 

    saveAndCloseButton.setText("Save and Close"); 
    saveAndCloseButton.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      saveAndCloseButtonActionPerformed(evt); 
     } 
    }); 

    saveButton.setText("Save"); 
    saveButton.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      saveButtonActionPerformed(evt); 
     } 
    }); 

    closeButton.setText("Close"); 
    closeButton.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      closeButtonActionPerformed(evt); 
     } 
    }); 

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
    getContentPane().setLayout(layout); 
    layout.setHorizontalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addContainerGap() 
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) 
       .addComponent(settingsTabs) 
       .addGroup(layout.createSequentialGroup() 
        .addGap(0, 0, Short.MAX_VALUE) 
        .addComponent(closeButton) 
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
        .addComponent(saveAndCloseButton) 
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
        .addComponent(saveButton))) 
      .addContainerGap()) 
    ); 
    layout.setVerticalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addGap(7, 7, 7) 
      .addComponent(settingsTabs) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
       .addComponent(closeButton) 
       .addComponent(saveButton) 
       .addComponent(saveAndCloseButton)) 
      .addContainerGap()) 
    ); 

    pack(); 
}// </editor-fold>       

private void saveAndCloseButtonActionPerformed(java.awt.event.ActionEvent evt) {             
    saveSettings(); 
    Popups.alertWindow("Your preferences are saved!"); 
    this.setVisible(false); 
}             

private void closeButtonActionPerformed(java.awt.event.ActionEvent evt) {            
    this.setVisible(false); 
}           

private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {           
    saveSettings(); 
    Popups.alertWindow("Your preferences are saved!"); 
}           
public void deleteSMTP(int ID) 
{ 
    int smtp = findSMTPSettingsIndex(ID); 

    if(smtp >= 0) 
    { 
     smtp_list.remove(smtp); 
     lista.remove(smtp); 
     lista.validate(); 
     smtpPanelList.validate(); 
    } 
} 
public SmtpSettings findSMTPSettings(int ID) 
{ 
    for(int i=0;i<smtp_list.size();i++) 
    { 
     if(smtp_list.get(i).ID == ID) 
      return smtp_list.get(i); 
    } 

    return null; 
} 
public int findSMTPSettingsIndex(int ID) 
{ 
    for(int i=0;i<smtp_list.size();i++) 
    { 
     if(smtp_list.get(i).ID == ID) 
      return i; 
    } 

    return -1; 
} 
private void addNewSmtpAccountActionPerformed(java.awt.event.ActionEvent evt) {             

    ID++;   
    smtp_tmp = new SmtpSettings(this, ID); 
    //smtp_tmp.setBounds(0, (ID * smtp_tmp.getSize().height)+5, 600, 100); 
    lista.add(smtp_tmp); 
    lista.validate(); 
    smtpPanelList.validate(); 

    smtp_list.add(smtp_tmp); 


}             
private void saveSettings(){ 
    prefs.put(SETTINGSEMAILCONTENT, emailContent.getText()); 
} 
/** 
* @param args the command line arguments 
*/ 
public static void main(String args[]) { 

    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> 

    try { 
     for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
      if ("Nimbus".equals(info.getName())) { 
       javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
       break; 
      } 
     } 
    } catch (ClassNotFoundException ex) { 
     java.util.logging.Logger.getLogger(settingsWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (InstantiationException ex) { 
     java.util.logging.Logger.getLogger(settingsWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (IllegalAccessException ex) { 
     java.util.logging.Logger.getLogger(settingsWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
     java.util.logging.Logger.getLogger(settingsWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } 
    //</editor-fold> 

    java.awt.EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      new settingsWindow().setVisible(true); 
     } 
    }); 
} 


private javax.swing.JPanel Tab1; 
private javax.swing.JPanel Tab2; 
private javax.swing.JButton addNewSmtpAccount; 
private javax.swing.JButton closeButton; 
private javax.swing.JTextArea emailContent; 
private javax.swing.JLabel emailContentSettingsPanel; 
private javax.swing.JLabel jLabel1; 
private javax.swing.JScrollPane jScrollPane1; 
private javax.swing.JPanel lista; 
private javax.swing.JButton saveAndCloseButton; 
private javax.swing.JButton saveButton; 
private javax.swing.JTabbedPane settingsTabs; 
private javax.swing.JScrollPane smtpPanelList; 
private javax.swing.JPanel smtpSettingsHeader; 
} 

и SmtpSettings.java

package code; 

public class SmtpSettings extends javax.swing.JPanel { 


    public int ID = -1; 
    private settingsWindow stw = null; 

    public SmtpSettings(settingsWindow stw, int id) { 
     initComponents(); 
     this.ID = id; 
     this.stw = stw; 
    } 
    public void setSMTPServer(String srv){ 
     this.smtpServer.setText(srv); 
    } 
    public String getSMTPServer() 
    { 
     return this.smtpServer.getText(); 
    } 


    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code">       
    private void initComponents() { 

     smtpServer = new javax.swing.JTextField(); 
     smtpPort = new javax.swing.JTextField(); 
     smtpSsl = new javax.swing.JCheckBox(); 
     smtpUsername = new javax.swing.JTextField(); 
     smtpPassword = new javax.swing.JPasswordField(); 
     deleteBtn = new javax.swing.JButton(); 

     setBorder(new javax.swing.border.LineBorder(new java.awt.Color(200, 200, 200), 1, true)); 
     setBounds(new java.awt.Rectangle(0, 0, 600, 100)); 
     setMaximumSize(new java.awt.Dimension(600, 100)); 
     setPreferredSize(new java.awt.Dimension(600, 100)); 

     smtpServer.setText("SMTP Server URL"); 
     smtpServer.setToolTipText("SMTP Server URL"); 

     smtpPort.setText("SMTP Port"); 
     smtpPort.setToolTipText("SMTP Port"); 
     smtpPort.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       smtpPortActionPerformed(evt); 
      } 
     }); 

     smtpSsl.setText("SSL"); 

     smtpUsername.setText("SMTP Username"); 
     smtpUsername.setToolTipText("SMTP Username"); 

     smtpPassword.setText("SMTP Password"); 
     smtpPassword.setToolTipText("SMTP Password"); 

     deleteBtn.setText("Delete SMTP Account"); 
     deleteBtn.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       deleteBtnActionPerformed(evt); 
      } 
     }); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); 
     this.setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addContainerGap() 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) 
        .addGroup(layout.createSequentialGroup() 
         .addComponent(smtpServer, javax.swing.GroupLayout.PREFERRED_SIZE, 227, javax.swing.GroupLayout.PREFERRED_SIZE) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(smtpPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(smtpSsl)) 
        .addGroup(layout.createSequentialGroup() 
         .addComponent(smtpUsername, javax.swing.GroupLayout.PREFERRED_SIZE, 176, javax.swing.GroupLayout.PREFERRED_SIZE) 
         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
         .addComponent(smtpPassword, javax.swing.GroupLayout.PREFERRED_SIZE, 186, javax.swing.GroupLayout.PREFERRED_SIZE))) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 37, Short.MAX_VALUE) 
       .addComponent(deleteBtn)) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup() 
       .addGap(11, 11, 11) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(smtpServer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addComponent(smtpPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addComponent(smtpSsl)) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
       .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
        .addComponent(smtpUsername, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addComponent(smtpPassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addComponent(deleteBtn)) 
       .addContainerGap(17, Short.MAX_VALUE)) 
     ); 
    }// </editor-fold>       

    private void deleteBtnActionPerformed(java.awt.event.ActionEvent evt) {           

     if(Popups.confirmWindow("Do you really want to delete?") == 0) 
     { 
      stw.deleteSMTP(ID); 
     } 
    }           

    private void smtpPortActionPerformed(java.awt.event.ActionEvent evt) {           

    }           


    private javax.swing.JButton deleteBtn; 
    private javax.swing.JPasswordField smtpPassword; 
    private javax.swing.JTextField smtpPort; 
    private javax.swing.JTextField smtpServer; 
    private javax.swing.JCheckBox smtpSsl; 
    private javax.swing.JTextField smtpUsername; 
} 

Кто-нибудь есть какие-либо идеи? Кроме того, я был бы очень благодарен всем, кто является гуру Java для любого решения или предложения, поскольку я новичок в Java. Сообщите мне, если вам нужно что-то еще из моего кода, например, объявление класса Popups или что-то еще.

+1

Возможно, вместо этого используется 'GridBagLayout'? – MadProgrammer

+0

Пробовал и получил тот же результат. :( – Zoli

ответ

1

Используйте что-то вроде GridBagLayout

Layout

private void addNewSmtpAccountActionPerformed(java.awt.event.ActionEvent evt) { 

    GridBagConstraints gbc = new GridBagConstraints(); 
    gbc.gridwidth = gbc.REMAINDER; 
    gbc.fill = gbc.HORIZONTAL; 
    gbc.weightx = 1; 

    ID++; 
    smtp_tmp = new SmtpSettings(this, ID); 
    //smtp_tmp.setBounds(0, (ID * smtp_tmp.getSize().height)+5, 600, 100); 
    lista.add(smtp_tmp, gbc); 
    lista.revalidate(); 

    smtp_list.add(smtp_tmp); 

} 

Кроме того, избегайте использования setPreferred/Minimum/MaximumSize

Взгляните на Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing? и How to Use GridBagLayout для получения более подробной информации

О и smtpPanelList.setLayout(null); собирается винт до конца

import java.awt.FlowLayout; 
import java.awt.GridBagConstraints; 
import java.awt.GridBagLayout; 
import java.util.ArrayList; 
import java.util.prefs.Preferences; 

public class settingsWindow extends javax.swing.JFrame { 

    public static final String SETTINGS = "DLP.settings"; 
    public static final String SETTINGSEMAILCONTENT = "emailContent"; 
    public ArrayList<SmtpSettings> smtp_list = null; 
    public int ID = -1; 
    public SmtpSettings smtp_tmp = null; 

    private Preferences prefs = null; 

    public settingsWindow() { 
     initComponents(); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
     prefs = Preferences.userRoot().node(SETTINGS); 
     emailContent.setText(prefs.get(SETTINGSEMAILCONTENT, emailContent.getText())); 

//  smtpPanelList.setLayout(null); 
     smtp_list = new ArrayList<SmtpSettings>(); 
//  smtpPanelList.setViewportView(lista); 
     lista.setLayout(new GridBagLayout()); 

    } 

    @SuppressWarnings("unchecked") 
// <editor-fold defaultstate="collapsed" desc="Generated Code">       
    private void initComponents() { 

     settingsTabs = new javax.swing.JTabbedPane(); 
     Tab1 = new javax.swing.JPanel(); 
     smtpSettingsHeader = new javax.swing.JPanel(); 
     jLabel1 = new javax.swing.JLabel(); 
     addNewSmtpAccount = new javax.swing.JButton(); 
     smtpPanelList = new javax.swing.JScrollPane(); 
     lista = new javax.swing.JPanel(); 
     Tab2 = new javax.swing.JPanel(); 
     emailContentSettingsPanel = new javax.swing.JLabel(); 
     jScrollPane1 = new javax.swing.JScrollPane(); 
     emailContent = new javax.swing.JTextArea(); 
     saveAndCloseButton = new javax.swing.JButton(); 
     saveButton = new javax.swing.JButton(); 
     closeButton = new javax.swing.JButton(); 

     setTitle("Your personal settings"); 
//  setMaximumSize(new java.awt.Dimension(1900, 1900)); 
//  setMinimumSize(new java.awt.Dimension(555, 500)); 
//  setPreferredSize(new java.awt.Dimension(660, 500)); 

     jLabel1.setText("Your SMTP Accounts to send an email."); 

     addNewSmtpAccount.setText("Add new account"); 
     addNewSmtpAccount.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       addNewSmtpAccountActionPerformed(evt); 
      } 
     }); 

     javax.swing.GroupLayout smtpSettingsHeaderLayout = new javax.swing.GroupLayout(smtpSettingsHeader); 
     smtpSettingsHeader.setLayout(smtpSettingsHeaderLayout); 
     smtpSettingsHeaderLayout.setHorizontalGroup(
         smtpSettingsHeaderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
         .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, smtpSettingsHeaderLayout.createSequentialGroup() 
             .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 466, Short.MAX_VALUE) 
             .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
             .addComponent(addNewSmtpAccount, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE) 
             .addContainerGap()) 
     ); 
     smtpSettingsHeaderLayout.setVerticalGroup(
         smtpSettingsHeaderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
         .addGroup(smtpSettingsHeaderLayout.createSequentialGroup() 
             .addGap(2, 2, 2) 
             .addGroup(smtpSettingsHeaderLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
                 .addComponent(addNewSmtpAccount) 
                 .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)) 
             .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
     ); 

     smtpPanelList.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); 
//  smtpPanelList.setMaximumSize(new java.awt.Dimension(600, 32767)); 
//  smtpPanelList.setMinimumSize(new java.awt.Dimension(600, 100)); 
//  smtpPanelList.setPreferredSize(new java.awt.Dimension(600, 10000)); 
//  smtpPanelList.setSize(new java.awt.Dimension(600, 100)); 

//  lista.setMaximumSize(new java.awt.Dimension(617, 32544)); 
//  lista.setMinimumSize(new java.awt.Dimension(600, 100)); 
//  lista.setSize(new java.awt.Dimension(600, 100)); 
     smtpPanelList.setViewportView(lista); 

     javax.swing.GroupLayout Tab1Layout = new javax.swing.GroupLayout(Tab1); 
     Tab1.setLayout(Tab1Layout); 
     Tab1Layout.setHorizontalGroup(
         Tab1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
         .addGroup(Tab1Layout.createSequentialGroup() 
             .addContainerGap() 
             .addComponent(smtpSettingsHeader, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
             .addContainerGap()) 
         .addComponent(smtpPanelList, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
     ); 
     Tab1Layout.setVerticalGroup(
         Tab1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
         .addGroup(Tab1Layout.createSequentialGroup() 
             .addComponent(smtpSettingsHeader, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
             .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
             .addComponent(smtpPanelList, javax.swing.GroupLayout.DEFAULT_SIZE, 363, Short.MAX_VALUE)) 
     ); 

     settingsTabs.addTab("SMTP Accounts", Tab1); 

     emailContentSettingsPanel.setText("Text of the email to send."); 
     emailContentSettingsPanel.setToolTipText("Text of the email to send."); 

     emailContent.setColumns(20); 
     emailContent.setRows(5); 
     jScrollPane1.setViewportView(emailContent); 

     javax.swing.GroupLayout Tab2Layout = new javax.swing.GroupLayout(Tab2); 
     Tab2.setLayout(Tab2Layout); 
     Tab2Layout.setHorizontalGroup(
         Tab2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
         .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, Tab2Layout.createSequentialGroup() 
             .addContainerGap() 
             .addGroup(Tab2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) 
                 .addComponent(jScrollPane1) 
                 .addComponent(emailContentSettingsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 615, Short.MAX_VALUE)) 
             .addContainerGap()) 
     ); 
     Tab2Layout.setVerticalGroup(
         Tab2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
         .addGroup(Tab2Layout.createSequentialGroup() 
             .addContainerGap() 
             .addComponent(emailContentSettingsPanel) 
             .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
             .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 372, Short.MAX_VALUE) 
             .addContainerGap()) 
     ); 

     settingsTabs.addTab("Email content", Tab2); 

     saveAndCloseButton.setText("Save and Close"); 
     saveAndCloseButton.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       saveAndCloseButtonActionPerformed(evt); 
      } 
     }); 

     saveButton.setText("Save"); 
     saveButton.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       saveButtonActionPerformed(evt); 
      } 
     }); 

     closeButton.setText("Close"); 
     closeButton.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       closeButtonActionPerformed(evt); 
      } 
     }); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
         layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
         .addGroup(layout.createSequentialGroup() 
             .addContainerGap() 
             .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) 
                 .addComponent(settingsTabs) 
                 .addGroup(layout.createSequentialGroup() 
                     .addGap(0, 0, Short.MAX_VALUE) 
                     .addComponent(closeButton) 
                     .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
                     .addComponent(saveAndCloseButton) 
                     .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
                     .addComponent(saveButton))) 
             .addContainerGap()) 
     ); 
     layout.setVerticalGroup(
         layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
         .addGroup(layout.createSequentialGroup() 
             .addGap(7, 7, 7) 
             .addComponent(settingsTabs) 
             .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
             .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
                 .addComponent(closeButton) 
                 .addComponent(saveButton) 
                 .addComponent(saveAndCloseButton)) 
             .addContainerGap()) 
     ); 

     pack(); 
    }// </editor-fold>       

    private void saveAndCloseButtonActionPerformed(java.awt.event.ActionEvent evt) { 
     saveSettings(); 
//  Popups.alertWindow("Your preferences are saved!"); 
     this.setVisible(false); 
    } 

    private void closeButtonActionPerformed(java.awt.event.ActionEvent evt) { 
     this.setVisible(false); 
    } 

    private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) { 
     saveSettings(); 
//  Popups.alertWindow("Your preferences are saved!"); 
    } 

    public void deleteSMTP(int ID) { 
     int smtp = findSMTPSettingsIndex(ID); 

     if (smtp >= 0) { 
      smtp_list.remove(smtp); 
      lista.remove(smtp); 
      lista.revalidate(); 
      lista.repaint(); 
     } 
    } 

    public SmtpSettings findSMTPSettings(int ID) { 
     for (int i = 0; i < smtp_list.size(); i++) { 
      if (smtp_list.get(i).ID == ID) { 
       return smtp_list.get(i); 
      } 
     } 

     return null; 
    } 

    public int findSMTPSettingsIndex(int ID) { 
     for (int i = 0; i < smtp_list.size(); i++) { 
      if (smtp_list.get(i).ID == ID) { 
       return i; 
      } 
     } 

     return -1; 
    } 

    private void addNewSmtpAccountActionPerformed(java.awt.event.ActionEvent evt) { 

     GridBagConstraints gbc = new GridBagConstraints(); 
     gbc.gridwidth = gbc.REMAINDER; 
     gbc.fill = gbc.HORIZONTAL; 
     gbc.weightx = 1; 

     ID++; 
     smtp_tmp = new SmtpSettings(this, ID); 
     //smtp_tmp.setBounds(0, (ID * smtp_tmp.getSize().height)+5, 600, 100); 
     lista.add(smtp_tmp, gbc); 
     lista.revalidate(); 

     smtp_list.add(smtp_tmp); 

    } 

    private void saveSettings() { 
     prefs.put(SETTINGSEMAILCONTENT, emailContent.getText()); 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String args[]) { 

     //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> 
     try { 
      for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
       if ("Nimbus".equals(info.getName())) { 
        javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
        break; 
       } 
      } 
     } catch (ClassNotFoundException ex) { 
      java.util.logging.Logger.getLogger(settingsWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (InstantiationException ex) { 
      java.util.logging.Logger.getLogger(settingsWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (IllegalAccessException ex) { 
      java.util.logging.Logger.getLogger(settingsWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
      java.util.logging.Logger.getLogger(settingsWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } 
     //</editor-fold> 

     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new settingsWindow().setVisible(true); 
      } 
     }); 
    } 

    private javax.swing.JPanel Tab1; 
    private javax.swing.JPanel Tab2; 
    private javax.swing.JButton addNewSmtpAccount; 
    private javax.swing.JButton closeButton; 
    private javax.swing.JTextArea emailContent; 
    private javax.swing.JLabel emailContentSettingsPanel; 
    private javax.swing.JLabel jLabel1; 
    private javax.swing.JScrollPane jScrollPane1; 
    private javax.swing.JPanel lista; 
    private javax.swing.JButton saveAndCloseButton; 
    private javax.swing.JButton saveButton; 
    private javax.swing.JTabbedPane settingsTabs; 
    private javax.swing.JScrollPane smtpPanelList; 
    private javax.swing.JPanel smtpSettingsHeader; 

    public class SmtpSettings extends javax.swing.JPanel { 

     public int ID = -1; 
     private settingsWindow stw = null; 

     public SmtpSettings(settingsWindow stw, int id) { 
      initComponents(); 
      this.ID = id; 
      this.stw = stw; 
     } 

     public void setSMTPServer(String srv) { 
      this.smtpServer.setText(srv); 
     } 

     public String getSMTPServer() { 
      return this.smtpServer.getText(); 
     } 

     @SuppressWarnings("unchecked") 
     // <editor-fold defaultstate="collapsed" desc="Generated Code">       
     private void initComponents() { 

      smtpServer = new javax.swing.JTextField(); 
      smtpPort = new javax.swing.JTextField(); 
      smtpSsl = new javax.swing.JCheckBox(); 
      smtpUsername = new javax.swing.JTextField(); 
      smtpPassword = new javax.swing.JPasswordField(); 
      deleteBtn = new javax.swing.JButton(); 

      setBorder(new javax.swing.border.LineBorder(new java.awt.Color(200, 200, 200), 1, true)); 
      setBounds(new java.awt.Rectangle(0, 0, 600, 100)); 
      setMaximumSize(new java.awt.Dimension(600, 100)); 
      setPreferredSize(new java.awt.Dimension(600, 100)); 

      smtpServer.setText("SMTP Server URL"); 
      smtpServer.setToolTipText("SMTP Server URL"); 

      smtpPort.setText("SMTP Port"); 
      smtpPort.setToolTipText("SMTP Port"); 
      smtpPort.addActionListener(new java.awt.event.ActionListener() { 
       public void actionPerformed(java.awt.event.ActionEvent evt) { 
        smtpPortActionPerformed(evt); 
       } 
      }); 

      smtpSsl.setText("SSL"); 

      smtpUsername.setText("SMTP Username"); 
      smtpUsername.setToolTipText("SMTP Username"); 

      smtpPassword.setText("SMTP Password"); 
      smtpPassword.setToolTipText("SMTP Password"); 

      deleteBtn.setText("Delete SMTP Account"); 
      deleteBtn.addActionListener(new java.awt.event.ActionListener() { 
       public void actionPerformed(java.awt.event.ActionEvent evt) { 
        deleteBtnActionPerformed(evt); 
       } 
      }); 

      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); 
      this.setLayout(layout); 
      layout.setHorizontalGroup(
          layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
          .addGroup(layout.createSequentialGroup() 
              .addContainerGap() 
              .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) 
                  .addGroup(layout.createSequentialGroup() 
                      .addComponent(smtpServer, javax.swing.GroupLayout.PREFERRED_SIZE, 227, javax.swing.GroupLayout.PREFERRED_SIZE) 
                      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
                      .addComponent(smtpPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
                      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
                      .addComponent(smtpSsl)) 
                  .addGroup(layout.createSequentialGroup() 
                      .addComponent(smtpUsername, javax.swing.GroupLayout.PREFERRED_SIZE, 176, javax.swing.GroupLayout.PREFERRED_SIZE) 
                      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
                      .addComponent(smtpPassword, javax.swing.GroupLayout.PREFERRED_SIZE, 186, javax.swing.GroupLayout.PREFERRED_SIZE))) 
              .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 37, Short.MAX_VALUE) 
              .addComponent(deleteBtn)) 
      ); 
      layout.setVerticalGroup(
          layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
          .addGroup(layout.createSequentialGroup() 
              .addGap(11, 11, 11) 
              .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
                  .addComponent(smtpServer, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
                  .addComponent(smtpPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
                  .addComponent(smtpSsl)) 
              .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) 
              .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
                  .addComponent(smtpUsername, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
                  .addComponent(smtpPassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
                  .addComponent(deleteBtn)) 
              .addContainerGap(17, Short.MAX_VALUE)) 
      ); 
     }// </editor-fold>       

     private void deleteBtnActionPerformed(java.awt.event.ActionEvent evt) { 

//   if (Popups.confirmWindow("Do you really want to delete?") == 0) { 
//    stw.deleteSMTP(ID); 
//   } 
     } 

     private void smtpPortActionPerformed(java.awt.event.ActionEvent evt) { 

     } 

     private javax.swing.JButton deleteBtn; 
     private javax.swing.JPasswordField smtpPassword; 
     private javax.swing.JTextField smtpPort; 
     private javax.swing.JTextField smtpServer; 
     private javax.swing.JCheckBox smtpSsl; 
     private javax.swing.JTextField smtpUsername; 
    } 
} 
+0

У меня такой же результат, к сожалению. Где вы хотите избежать использования setPreferred/Minimum/MaximumSize? Как правило, в настройкахWindow или в SmtpSettings? – Zoli

+1

Я вообще вообще – MadProgrammer

+0

* «У меня такой же результат, к сожалению «У меня есть анимированный Gif, который говорит иначе;). Убедитесь, что вы изменили менеджер макета 'lista' на' GridBagLayout' – MadProgrammer

 Смежные вопросы

  • Нет связанных вопросов^_^