JComboBox, неправильная перерисовка после выбора - Java

Узнай цену своей работы

Формулировка задачи:

Добрый день. Столкнулся вот с такой проблемой: после выбора объекта в JComboBox он неправильно перерисовывается. Пример: После выбора элемента и переходе, скажем уже на JSpinner, этот JComboBox рисуется и там. Использовал стандартный редактор форм в NetBeans. Собственно почему так происходит? и как решать?

Решение задачи: «JComboBox, неправильная перерисовка после выбора»

textual
Листинг программы
  1. import java.awt.Color;
  2.  
  3. public class JMainFrame extends javax.swing.JFrame {
  4.  
  5.     public JMainFrame() {
  6.         initComponents();
  7.        
  8.         // Радио-буттоны в группу
  9.         buttonGroup1.add(jRadioButton_Epicycloid);
  10.         buttonGroup1.add(jRadioButton_Hypocycloid);
  11.         jRadioButton_Hypocycloid.setSelected(true);
  12.     }
  13.  
  14.     /**
  15.      * This method is called from within the constructor to initialize the form.
  16.      * WARNING: Do NOT modify this code. The content of this method is always
  17.      * regenerated by the Form Editor.
  18.      */
  19.     @SuppressWarnings("unchecked")
  20.     // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
  21.     private void initComponents() {
  22.  
  23.         buttonGroup1 = new javax.swing.ButtonGroup();
  24.         jRadioButton_Epicycloid = new javax.swing.JRadioButton();
  25.         jRadioButton_Hypocycloid = new javax.swing.JRadioButton();
  26.         label1 = new java.awt.Label();
  27.         label2 = new java.awt.Label();
  28.         label3 = new java.awt.Label();
  29.         label4 = new java.awt.Label();
  30.         jSpinner_scale = new javax.swing.JSpinner();
  31.         jSpinner_k = new javax.swing.JSpinner();
  32.         jSpinner_R = new javax.swing.JSpinner();
  33.         jSpinner_r = new javax.swing.JSpinner();
  34.         button_Print = new java.awt.Button();
  35.         jComboBox1 = new javax.swing.JComboBox<>();
  36.  
  37.         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  38.         setName("MainFrame"); // NOI18N
  39.         setResizable(false);
  40.         setSize(new java.awt.Dimension(468, 148));
  41.  
  42.         jRadioButton_Epicycloid.setText("Эпициклоида");
  43.  
  44.         jRadioButton_Hypocycloid.setText("Гипоциклоида");
  45.  
  46.         label1.setText("Масштаб");
  47.  
  48.         label2.setText("k");
  49.  
  50.         label3.setText("R");
  51.  
  52.         label4.setText("r");
  53.  
  54.         jSpinner_scale.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(1.0f), Float.valueOf(1.0f), Float.valueOf(50.0f), Float.valueOf(0.1f)));
  55.  
  56.         jSpinner_k.setModel(new javax.swing.SpinnerNumberModel(1, 1, 200, 1));
  57.         jSpinner_k.setEnabled(false);
  58.  
  59.         jSpinner_R.setModel(new javax.swing.SpinnerNumberModel(1, 1, 200, 1));
  60.  
  61.         jSpinner_r.setModel(new javax.swing.SpinnerNumberModel(1, 1, 200, 1));
  62.  
  63.         button_Print.setLabel("Нарисовать");
  64.         button_Print.addActionListener(new java.awt.event.ActionListener() {
  65.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  66.                 button_PrintActionPerformed(evt);
  67.             }
  68.         });
  69.  
  70.         jComboBox1.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "black", "red", "green", "yellow" }));
  71.  
  72.         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
  73.         getContentPane().setLayout(layout);
  74.         layout.setHorizontalGroup(
  75.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  76.             .addGroup(layout.createSequentialGroup()
  77.                 .addGap(10, 10, 10)
  78.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  79.                     .addComponent(jRadioButton_Hypocycloid)
  80.                     .addComponent(jRadioButton_Epicycloid)
  81.                     .addGroup(layout.createSequentialGroup()
  82.                         .addGap(10, 10, 10)
  83.                         .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)))
  84.                 .addGap(21, 21, 21)
  85.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  86.                     .addComponent(label1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  87.                     .addGroup(layout.createSequentialGroup()
  88.                         .addGap(40, 40, 40)
  89.                         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  90.                             .addComponent(label2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  91.                             .addComponent(label3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  92.                             .addComponent(label4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
  93.                 .addGap(29, 29, 29)
  94.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  95.                     .addComponent(jSpinner_scale, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
  96.                     .addComponent(jSpinner_k, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
  97.                     .addComponent(jSpinner_R, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
  98.                     .addComponent(jSpinner_r, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE))
  99.                 .addGap(10, 10, 10)
  100.                 .addComponent(button_Print, javax.swing.GroupLayout.PREFERRED_SIZE, 173, javax.swing.GroupLayout.PREFERRED_SIZE)
  101.                 .addContainerGap(16, Short.MAX_VALUE))
  102.         );
  103.         layout.setVerticalGroup(
  104.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  105.             .addGroup(layout.createSequentialGroup()
  106.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  107.                     .addGroup(layout.createSequentialGroup()
  108.                         .addGap(10, 10, 10)
  109.                         .addComponent(jRadioButton_Hypocycloid)
  110.                         .addGap(7, 7, 7)
  111.                         .addComponent(jRadioButton_Epicycloid)
  112.                         .addGap(17, 17, 17)
  113.                         .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  114.                     .addGroup(layout.createSequentialGroup()
  115.                         .addGap(10, 10, 10)
  116.                         .addComponent(label1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  117.                         .addGap(10, 10, 10)
  118.                         .addComponent(label2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  119.                         .addGap(10, 10, 10)
  120.                         .addComponent(label3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  121.                         .addGap(10, 10, 10)
  122.                         .addComponent(label4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  123.                     .addGroup(layout.createSequentialGroup()
  124.                         .addGap(11, 11, 11)
  125.                         .addComponent(jSpinner_scale, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  126.                         .addGap(10, 10, 10)
  127.                         .addComponent(jSpinner_k, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  128.                         .addGap(11, 11, 11)
  129.                         .addComponent(jSpinner_R, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  130.                         .addGap(11, 11, 11)
  131.                         .addComponent(jSpinner_r, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  132.                     .addGroup(layout.createSequentialGroup()
  133.                         .addGap(11, 11, 11)
  134.                         .addComponent(button_Print, javax.swing.GroupLayout.PREFERRED_SIZE, 112, javax.swing.GroupLayout.PREFERRED_SIZE)))
  135.                 .addContainerGap(17, Short.MAX_VALUE))
  136.         );
  137.  
  138.         pack();
  139.     }// </editor-fold>                        
  140.  
  141.     private void button_PrintActionPerformed(java.awt.event.ActionEvent evt) {                                            
  142.         Color color;
  143.         try {
  144.             java.lang.reflect.Field field = Color.class.getField((String)jComboBox1.getModel().getSelectedItem());
  145.             color = (Color)field.get(null);
  146.         } catch (Exception e) {
  147.             color = null; // Not defined
  148.         }
  149.         JPaintFrame pFrame = new JPaintFrame(
  150.                 (int)jSpinner_k.getValue(),
  151.                 (int)jSpinner_R.getValue(),
  152.                 (int)jSpinner_r.getValue(),
  153.                 (float)jSpinner_scale.getValue(),
  154.                 color,
  155.                 jRadioButton_Epicycloid.isSelected(),
  156.                 jRadioButton_Hypocycloid.isSelected()
  157.         );
  158.     }                                            
  159.  
  160.     /**
  161.      * @param args the command line arguments
  162.      */
  163.     public static void main(String args[]) {
  164.         /* Set the Nimbus look and feel */
  165.         //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
  166.         /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
  167.          * For details see [url]http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html[/url]
  168.          */
  169.         try {
  170.             for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
  171.                 if ("Nimbus".equals(info.getName())) {
  172.                     javax.swing.UIManager.setLookAndFeel(info.getClassName());
  173.                     break;
  174.                 }
  175.             }
  176.         } catch (ClassNotFoundException ex) {
  177.             java.util.logging.Logger.getLogger(JMainFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  178.         } catch (InstantiationException ex) {
  179.             java.util.logging.Logger.getLogger(JMainFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  180.         } catch (IllegalAccessException ex) {
  181.             java.util.logging.Logger.getLogger(JMainFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  182.         } catch (javax.swing.UnsupportedLookAndFeelException ex) {
  183.             java.util.logging.Logger.getLogger(JMainFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  184.         }
  185.         //</editor-fold>
  186.  
  187.         /* Create and display the form */
  188.         java.awt.EventQueue.invokeLater(new Runnable() {
  189.             public void run() {
  190.                 new JMainFrame().setVisible(true);
  191.             }
  192.         });
  193.     }
  194.  
  195.     // Variables declaration - do not modify                    
  196.     private javax.swing.ButtonGroup buttonGroup1;
  197.     private java.awt.Button button_Print;
  198.     private javax.swing.JComboBox<String> jComboBox1;
  199.     private javax.swing.JRadioButton jRadioButton_Epicycloid;
  200.     private javax.swing.JRadioButton jRadioButton_Hypocycloid;
  201.     private javax.swing.JSpinner jSpinner_R;
  202.     private javax.swing.JSpinner jSpinner_k;
  203.     private javax.swing.JSpinner jSpinner_r;
  204.     private javax.swing.JSpinner jSpinner_scale;
  205.     private java.awt.Label label1;
  206.     private java.awt.Label label2;
  207.     private java.awt.Label label3;
  208.     private java.awt.Label label4;
  209.     // End of variables declaration                  
  210. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут