Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Please convert from JAVA to PYTHON. import javax.swing.*; import javax.swing.eve

ID: 3580806 • Letter: P

Question

Please convert from JAVA to PYTHON.

import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class CalenderProgram{
static JLabel lblMonth, lblYear;
static JButton btnPrev, btnNext;
static JTable tblCalendar;
static JComboBox cmbYear;
static JFrame frmMain;
static Container pane;
static DefaultTableModel mtblCalendar; //Table model
static JScrollPane stblCalendar; //The scrollpane
static JPanel pnlCalendar;
static int realYear, realMonth, realDay, currentYear, currentMonth;
  
public static void main (String args[]){
//Look and feel
try {UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());}
catch (ClassNotFoundException e) {}
catch (InstantiationException e) {}
catch (IllegalAccessException e) {}
catch (UnsupportedLookAndFeelException e) {}
  
//Prepare frame
frmMain = new JFrame ("Gestionnaire de clients"); //Create frame
frmMain.setSize(330, 375); //Set size to 400x400 pixels
pane = frmMain.getContentPane(); //Get content pane
pane.setLayout(null); //Apply null layout
frmMain.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Close when X is clicked
  
//Create controls
lblMonth = new JLabel ("January");
lblYear = new JLabel ("Change year:");
cmbYear = new JComboBox();
btnPrev = new JButton ("<<");
btnNext = new JButton (">>");
mtblCalendar = new DefaultTableModel(){public boolean isCellEditable(int rowIndex, int mColIndex){return false;}};
tblCalendar = new JTable(mtblCalendar);
stblCalendar = new JScrollPane(tblCalendar);
pnlCalendar = new JPanel(null);
  
//Set border
pnlCalendar.setBorder(BorderFactory.createTitledBorder("Calendar"));
  
//Register action listeners
btnPrev.addActionListener(new btnPrev_Action());
btnNext.addActionListener(new btnNext_Action());
cmbYear.addActionListener(new cmbYear_Action());
  
//Add controls to pane
pane.add(pnlCalendar);
pnlCalendar.add(lblMonth);
pnlCalendar.add(lblYear);
pnlCalendar.add(cmbYear);
pnlCalendar.add(btnPrev);
pnlCalendar.add(btnNext);
pnlCalendar.add(stblCalendar);
  
//Set bounds
pnlCalendar.setBounds(0, 0, 320, 335);
lblMonth.setBounds(160-lblMonth.getPreferredSize().width/2, 25, 100, 25);
lblYear.setBounds(10, 305, 80, 20);
cmbYear.setBounds(230, 305, 80, 20);
btnPrev.setBounds(10, 25, 50, 25);
btnNext.setBounds(260, 25, 50, 25);
stblCalendar.setBounds(10, 50, 300, 250);
  
//Make frame visible
frmMain.setResizable(false);
frmMain.setVisible(true);
  
//Get real month/year
GregorianCalendar cal = new GregorianCalendar(); //Create calendar
realDay = cal.get(GregorianCalendar.DAY_OF_MONTH); //Get day
realMonth = cal.get(GregorianCalendar.MONTH); //Get month
realYear = cal.get(GregorianCalendar.YEAR); //Get year
currentMonth = realMonth; //Match month and year
currentYear = realYear;
  
//Add headers
String[] headers = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; //All headers
for (int i=0; i<7; i++){
mtblCalendar.addColumn(headers[i]);
}
  
tblCalendar.getParent().setBackground(tblCalendar.getBackground()); //Set background
  
//No resize/reorder
tblCalendar.getTableHeader().setResizingAllowed(false);
tblCalendar.getTableHeader().setReorderingAllowed(false);
  
//Single cell selection
tblCalendar.setColumnSelectionAllowed(true);
tblCalendar.setRowSelectionAllowed(true);
tblCalendar.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  
//Set row/column count
tblCalendar.setRowHeight(38);
mtblCalendar.setColumnCount(7);
mtblCalendar.setRowCount(6);
  
//Populate table
for (int i=realYear-100; i<=realYear+100; i++){
cmbYear.addItem(String.valueOf(i));
}
  
//Refresh calendar
refreshCalendar (realMonth, realYear); //Refresh calendar
}
  
public static void refreshCalendar(int month, int year){
//Variables
String[] months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
int nod, som; //Number Of Days, Start Of Month
  
//Allow/disallow buttons
btnPrev.setEnabled(true);
btnNext.setEnabled(true);
if (month == 0 && year <= realYear-10){btnPrev.setEnabled(false);} //Too early
if (month == 11 && year >= realYear+100){btnNext.setEnabled(false);} //Too late
lblMonth.setText(months[month]); //Refresh the month label (at the top)
lblMonth.setBounds(160-lblMonth.getPreferredSize().width/2, 25, 180, 25); //Re-align label with calendar
cmbYear.setSelectedItem(String.valueOf(year)); //Select the correct year in the combo box
  
//Clear table
for (int i=0; i<6; i++){
for (int j=0; j<7; j++){
mtblCalendar.setValueAt(null, i, j);
}
}
  
//Get first day of month and number of days
GregorianCalendar cal = new GregorianCalendar(year, month, 1);
nod = cal.getActualMaximum(GregorianCalendar.DAY_OF_MONTH);
som = cal.get(GregorianCalendar.DAY_OF_WEEK);
  
//Draw calendar
for (int i=1; i<=nod; i++){
int row = new Integer((i+som-2)/7);
int column = (i+som-2)%7;
mtblCalendar.setValueAt(i, row, column);
}
  
//Apply renderers
tblCalendar.setDefaultRenderer(tblCalendar.getColumnClass(0), new tblCalendarRenderer());
}
  
static class tblCalendarRenderer extends DefaultTableCellRenderer{
public Component getTableCellRendererComponent (JTable table, Object value, boolean selected, boolean focused, int row, int column){
super.getTableCellRendererComponent(table, value, selected, focused, row, column);
if (column == 0 || column == 6){ //Week-end
setBackground(new Color(255, 220, 220));
}
else{ //Week
setBackground(new Color(255, 255, 255));
}
if (value != null){
if (Integer.parseInt(value.toString()) == realDay && currentMonth == realMonth && currentYear == realYear){ //Today
setBackground(new Color(220, 220, 255));
}
}
setBorder(null);
setForeground(Color.black);
return this;
}
}
  
static class btnPrev_Action implements ActionListener{
public void actionPerformed (ActionEvent e){
if (currentMonth == 0){ //Back one year
currentMonth = 11;
currentYear -= 1;
}
else{ //Back one month
currentMonth -= 1;
}
refreshCalendar(currentMonth, currentYear);
}
}
static class btnNext_Action implements ActionListener{
public void actionPerformed (ActionEvent e){
if (currentMonth == 11){ //Foward one year
currentMonth = 0;
currentYear += 1;
}
else{ //Foward one month
currentMonth += 1;
}
refreshCalendar(currentMonth, currentYear);
}
}
static class cmbYear_Action implements ActionListener{
public void actionPerformed (ActionEvent e){
if (cmbYear.getSelectedItem() != null){
String b = cmbYear.getSelectedItem().toString();
currentYear = Integer.parseInt(b);
refreshCalendar(currentMonth, currentYear);
}
}
}
}

Explanation / Answer

from javax.swing.Star import *
from javax.swing.event.Star import *
from javax.swing.table.Star import *
from java.awt.Star import *
from java.awt.event.Star import *
from java.util.Star import *

class CalenderProgram(object):
   def __init__(self):
#Table model #The scrollpane
   def main(args): #Look and feel
       try:
           UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName)
       except ClassNotFoundException, e:
       except InstantiationException, e:
       except IllegalAccessException, e:
       except UnsupportedLookAndFeelException, e:
       finally: #Prepare frame
       self._frmMain = JFrame("Gestionnaire de clients") #Create frame
       self._frmMain.setSize(330, 375) #Set size to 400x400 pixels
       self._pane = self._frmMain.getContentPane #Get content pane
       self._pane.setLayout(None) #Apply null layout
       self._frmMain.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) #Close when X is clicked #Create controls
       self._lblMonth = JLabel("January")
       self._lblYear = JLabel("Change year:")
       self._cmbYear = JComboBox()
       self._btnPrev = JButton("&lt;&lt;")
       self._btnNext = JButton("&gt;&gt;")
       self._mtblCalendar = DefaultTableModel()
       self._tblCalendar = JTable(self._mtblCalendar)
       self._stblCalendar = JScrollPane(self._tblCalendar)
       self._pnlCalendar = JPanel(None) #Set border
       self._pnlCalendar.setBorder(BorderFactory.createTitledBorder("Calendar")) #Register action listeners
       self._btnPrev.addActionListener(btnPrev_Action())
       self._btnNext.addActionListener(btnNext_Action())
       self._cmbYear.addActionListener(cmbYear_Action()) #Add controls to pane
       self._pane.add(self._pnlCalendar)
       self._pnlCalendar.add(self._lblMonth)
       self._pnlCalendar.add(self._lblYear)
       self._pnlCalendar.add(self._cmbYear)
       self._pnlCalendar.add(self._btnPrev)
       self._pnlCalendar.add(self._btnNext)
       self._pnlCalendar.add(self._stblCalendar) #Set bounds
       self._pnlCalendar.setBounds(0, 0, 320, 335)
       self._lblMonth.setBounds((160 - (self._lblMonth.getPreferredSize.width / 2)), 25, 100, 25)
       self._lblYear.setBounds(10, 305, 80, 20)
       self._cmbYear.setBounds(230, 305, 80, 20)
       self._btnPrev.setBounds(10, 25, 50, 25)
       self._btnNext.setBounds(260, 25, 50, 25)
       self._stblCalendar.setBounds(10, 50, 300, 250) #Make frame visible
       self._frmMain.setResizable(False)
       self._frmMain.setVisible(True) #Get real month/year
       cal = GregorianCalendar() #Create calendar
       self._realDay = cal.get(GregorianCalendar.DAY_OF_MONTH) #Get day
       self._realMonth = cal.get(GregorianCalendar.MONTH) #Get month
       self._realYear = cal.get(GregorianCalendar.YEAR) #Get year
       self._currentMonth = self._realMonth #Match month and year
       self._currentYear = self._realYear #Add headers
       headers = Array[str](("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat")) #All headers
       i = 0
       while (i < 7):
           self._mtblCalendar.addColumn(CalenderProgram.headers(i))
           i = (i + 1)
       self._tblCalendar.getParent.setBackground(self._tblCalendar.getBackground) #Set background #No resize/reorder
       self._tblCalendar.getTableHeader.setResizingAllowed(False)
       self._tblCalendar.getTableHeader.setReorderingAllowed(False) #Single cell selection
       self._tblCalendar.setColumnSelectionAllowed(True)
       self._tblCalendar.setRowSelectionAllowed(True)
       self._tblCalendar.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) #Set row/column count
       self._tblCalendar.setRowHeight(38)
       self._mtblCalendar.setColumnCount(7)
       self._mtblCalendar.setRowCount(6) #Populate table
       i = (self._realYear - 100)
       while (i <= (self._realYear + 100)):
           self._cmbYear.addItem(str.valueOf(i))
           i = (i + 1) #Refresh calendar
       CalenderProgram.refreshCalendar(self._realMonth, self._realYear)

   main = staticmethod(main)
#Refresh calendar
   def refreshCalendar(month, year): #Variables
       months = Array[str](("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")) #Number Of Days, Start Of Month #Allow/disallow buttons
       self._btnPrev.setEnabled(True)
       self._btnNext.setEnabled(True)
       if ((month == 0) and (year <= (self._realYear - 10))):
           self._btnPrev.setEnabled(False) #Too early
       if ((month == 11) and (year >= (self._realYear + 100))):
           self._btnNext.setEnabled(False) #Too late
       self._lblMonth.setText(CalenderProgram.months(month)) #Refresh the month label (at the top)
       self._lblMonth.setBounds((160 - (self._lblMonth.getPreferredSize.width / 2)), 25, 180, 25) #Re-align label with calendar
       self._cmbYear.setSelectedItem(str.valueOf(year)) #Select the correct year in the combo box #Clear table
       i = 0
       while (i < 6):
           j = 0
           while (j < 7):
               self._mtblCalendar.setValueAt(None, i, j)
               j = (j + 1)
           i = (i + 1) #Get first day of month and number of days
       cal = GregorianCalendar(year, month, 1)
       nod = cal.getActualMaximum(GregorianCalendar.DAY_OF_MONTH)
       som = cal.get(GregorianCalendar.DAY_OF_WEEK) #Draw calendar
       i = 1
       while (i <= nod):
           row = System.Int32(((i + (som - 2)) / 7))
           column = ((i + (som - 2)) % 7)
           self._mtblCalendar.setValueAt(i, row, column)
           i = (i + 1) #Apply renderers
       self._tblCalendar.setDefaultRenderer(self._tblCalendar.getColumnClass(0), tblCalendarRenderer())

   refreshCalendar = staticmethod(refreshCalendar)

   class tblCalendarRenderer(DefaultTableCellRenderer):
       def getTableCellRendererComponent(self, table, value, selected, focused, row, column):
           self.getTableCellRendererComponent(table, value, selected, focused, row, column)
           if ((column == 0) or (column == 6)): #Week-end
               self.setBackground(Color(255, 220, 220))
           else: #Week
               self.setBackground(Color(255, 255, 255))
           if (not (value) is None):
               if ((int.parseInt(value.toString) == realDay) and ((currentMonth == realMonth) and (currentYear == realYear))): #Today
                   self.setBackground(Color(220, 220, 255))
           self.setBorder(None)
           self.setForeground(Color.black)
           return self

   class btnPrev_Action(ActionListener):
       def actionPerformed(self, e):
           if (currentMonth == 0): #Back one year
               currentMonth = 11
               currentYear = (currentYear - 1)
           else: #Back one month
               currentMonth = (currentMonth - 1)
           self.refreshCalendar(currentMonth, currentYear)

   class btnNext_Action(ActionListener):
       def actionPerformed(self, e):
           if (currentMonth == 11): #Foward one year
               currentMonth = 0
               currentYear = (currentYear + 1)
           else: #Foward one month
               currentMonth = (currentMonth + 1)
           self.refreshCalendar(currentMonth, currentYear)

   class cmbYear_Action(ActionListener):
       def actionPerformed(self, e):
           if (not (cmbYear.getSelectedItem) is None):
               b = cmbYear.getSelectedItem.toString
               currentYear = int.parseInt(b)
               self.refreshCalendar(currentMonth, currentYear)

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote